使用SERVER_NAME时Flask出现404错误
在我的Flask配置中,我把SERVER_NAME设置成像“app.example.com”这样的域名。这样做是因为我需要用到url_for
来生成_external
的链接。如果不设置SERVER_NAME,Flask会认为服务器是127.0.0.1:5000(其实它是在一个反向代理后面运行的),然后返回像http://127.0.0.1:5000/location
这样的外部链接。
到目前为止一切正常。但我遇到的问题是:设置了SERVER_NAME后,每个链接都返回404错误。我看到每个请求都到达了服务器,链接也是正确的,但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 个回答
18
我刚找到答案。Apache有一个选项叫做 ProxyPreserveHost
。一旦把它设置为开启,所有东西就会按预期工作。
更多信息可以在这里找到: http://flask.pocoo.org/mailinglist/archive/2011/3/14/problem-with-apache-proxy-and-canonical-urls/