使用SERVER_NAME时的Flask 404

时间:2014-03-11 03:29:40

标签: python apache flask

在我的Flask配置中,我将SERVER_NAME设置为“app.example.com”之类的域。我这样做是因为我需要将url_for_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"

有什么想法吗?

1 个答案:

答案 0 :(得分:14)

刚刚找到答案。 Apache有一个名为ProxyPreserveHost的选项。一旦设置为On,一切都按预期工作。

此处提供更多信息:http://flask.pocoo.org/mailinglist/archive/2011/3/14/problem-with-apache-proxy-and-canonical-urls/