Todo:タイトルがあきらかにおかしい。

やりたいこと

http://192.168.0.1:5001/myapp ←これを
http://example.com/myprefix/myapp ←これで動かしたい。
myappのscriptを一切変更せずに。(url_forの挙動がよくわからなかったんですよ。)

プロキシー

イカ娘ちゃんは、言った。プロキシーを作ればいいじゃなイカ!ほんとは、flask.pocoo.org/snippets/35/の真似しただけです。

nginxの設定

location /myprefix/ {     
    include uwsgi_params;     
    if ($uri ~ ^/myprefix(.*)?) {    
        set $path_url $1;     
    }    
    uwsgi_param SCRIPT_NAME /myprefix; 
    uwsgi_pass  0.0.0.0:5001;    
    uwsgi_param X-Script-Name /myprefix;    
    uwsgi_param X-Scheme $scheme;     
}

reverseProxy

class ReverseProxied(object):
    def __init__(self, app):
        self.app = app
    def __call__(self, environ, start_response):
        script_name = environ.get('X-Script-Name', '')
        if script_name:
            path_info = environ['PATH_INFO']
            if path_info.startswith(script_name):
                environ['PATH_INFO'] = path_info[len(script_name):]
        scheme = environ.get('X-Scheme', '')
        if scheme:
            environ['wsgi.url_scheme'] = scheme
        return self.app(environ, start_response)

done

nginxをreloadして、myappにReverseProxyを組み込んで、uwsgi起動しておしまい。headerとか、X-が何を意味するのかわかってないので、調べたいと思います(・∀・)v

Read and Post Comments

oauthを参考に、はてなハイクAPIに投稿するサンプルを作成しました(/ω\)<コードはlaunchpadに置いてます。

http://bazaar.launchpad.net/~toenobu/+junk/hatenaHaiku/view/head:/haiku.py
Read and Post Comments