在我的 Flask 配置中,我将 SERVER_NAME 设置为“app.example.com”之类的域。我这样做是因为我需要使用url_for
with _external
网址。如果未设置 SERVER_NAME,Flask 会认为服务器是 127.0.0.1:5000(它实际上在反向代理后面运行),并返回一个外部 URL,例如http://127.0.0.1:5000/location
.
到目前为止,一切都很好。但这是我的问题:设置 SERVER_NAME 后,每个 URL 都会返回 404。我看到每个请求都到达服务器,到达正确的 URL,但 Flask 响应 404。如果我禁用 SERVER_NAME,则会返回正确的页面。
我将 Apache 与 ProxyPass 和 ProxyPassReverse 一起使用(我知道,我宁愿使用 Nginx,但这是一个要求)。以下是我要添加的标题:
Header add Host "app.example.com"
RequestHeader set Host "app.example.com"
Header add X-Forwarded-Host "app.example.com"
RequestHeader set X-Forwarded-Host "app.example.com"
有任何想法吗?
刚刚找到答案。 Apache 有一个选项叫做ProxyPreserveHost
。一旦设置为“开”,一切都会按预期进行。
更多信息请点击这里:http://flask.pocoo.org/mailinglist/archive/2011/3/14/problem-with-apache-proxy-and-canonical-urls/ http://flask.pocoo.org/mailinglist/archive/2011/3/14/problem-with-apache-proxy-and-canonical-urls/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)