我在端口5000上运行了一个Flask应用程序。我的服务器管理员已配置nginx将其转发到端口5001(对不起,如果我的术语错误:Flask应用程序在端口5000上运行,但该应用程序可在http://the_url:5001
)。
在浏览器中直接访问的所有路由都可以正常工作,但使用url_for()
的任何重定向似乎都会导致从网上遗漏端口 - 即redirect(url_for('index'))
重定向到http://the_url/
而不是{{ 1}}(http://the_url:5001/
触发函数@app.route("/")
)。
如何确保Flask在重定向时添加正确的端口?如果我将默认端口更改为5001,nginx配置将无法正常工作,因为它期望应用程序在端口5000上运行?
答案 0 :(得分:8)
将此添加到您的Nginx配置:
proxy_set_header Host $http_host;
要么
proxy_set_header Host $host:5001
答案 1 :(得分:0)
尝试将这样的内容添加到nginx配置中。
location / {
proxy_pass http://localhost:5000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
}
这样你就可以在localhost:5000上运行你的烧瓶应用程序。如果您正确设置server { listen 80; }
配置(在配置顶部),用户应该能够访问端口80,它将重定向到内部5000端口。我url_for()
的所有工作都很完美。