我使用 nginx 作为 tornado 的前端(它运行基于 Flask 框架的应用程序)。Nginx 在 8080 端口上运行。但是,当 Flask 生成“301 重定向”时,它不会考虑 8080 端口。我得到一个到 80 端口的重定向,而那里没有任何监听。
这是我的站点的 nginx 配置:
server {
listen 8080;
server_name localhost;
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
expires off;
}
location / {
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-Forwarded-Port 8080;
proxy_pass http://127.0.0.1:5000;
}
}
有办法解决这个问题吗?
答案1
代理重定向是您要查找的指令。由于后端服务器重定向到端口 80,因此部分问题就在这里。直接在端口 5000 上测试 tornado,重定向是否有效?我猜是无效的。弄清楚如何调整 tornado 或 Flask 以在重定向中包含正确的端口。
即使您不这样做,nginx 也可以使用 proxy_redirect(s) 来处理它。
proxy_redirect default;
proxy_redirect http://127.0.0.1:80/ /;