10

我有一个使用 gunicorn 运行的 Flask 应用程序http://127.0.0.1:4000

gunicorn -b 127.0.0.1:4000 webapp:app

现在我想使用 nginx 作为反向代理,并以一种每个都去的方式转发http://myserver.com/webapp到.http://127.0.0.1:4000http://myserver.com/webapp/subpathhttp://127.0.0.1:4000/subpath

不使用子路径时,代理/重定向可以很好地工作:

upstream app {
    server 127.0.0.1:4000 fail_timeout=0;
}

server {
    listen 80 default;
    client_max_body_size 4G;
    server_name _;

    location / {
       proxy_pass http://app;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;       
    }
}

我该如何设置

location /webapp {
    #go to my gunicorn app, translate URLs nicely
}

Flask 开发人员的这个提示不起作用: http: //flask.pocoo.org/snippets/35/

已解决:片段http://flask.pocoo.org/snippets/35/有效!我的模板中有一些绝对 URL(例如/task/delete),必须将所有内容更改为url_for().

愚蠢......但现在它像预期的那样工作,我的应用程序位于“ http://myserver.com/subpath

4

1 回答 1

13

我解决了我的问题:片段http://flask.pocoo.org/snippets/35/确实有效,我的模板中包含绝对 URL 真是太愚蠢了。我把它改成了url_for()现在它就像魅力一样。

于 2013-07-23T01:06:29.657 回答