我在http://127.0.0.1:4000
上使用了带有gunicorn的Flask应用程序:
gunicorn -b 127.0.0.1:4000 webapp:app
现在我想使用nginx作为反向代理,并以http://myserver.com/webapp
转换为http://127.0.0.1:4000
的方式将http://myserver.com/webapp/subpath
转发给http://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/有效!我的模板中有一些绝对网址(例如/task/delete
),并且必须将所有内容更改为url_for()
。
愚蠢......但现在它的工作方式与预期一致,我的应用程序位于“http://myserver.com/subpath”
答案 0 :(得分:12)
我解决了我的问题:代码段http://flask.pocoo.org/snippets/35/确实有效,我在模板中拥有绝对网址太愚蠢了。我将其更改为url_for()
,现在它就像魅力一样。