Flask url_for('index', _external=True) 创建具有双ip的url?

问题描述 投票:0回答:2

我有一个 Flask 网站,它在测试机上运行良好,我只需使用 IP 地址进行调用。我现在部署了一些新代码,

url_for('index', _external=True)
突然给出了一个地址,其中列出了(正确的)IP地址两次,中间有一个逗号:

http://52.29.15.xxx,52.29.15.xxx/

我的

SERVER_NAME
中没有定义
config.py
(直到今天都工作正常),并且我在 nginx 服务器后面的 gunicorn 上运行。

我尝试将

SERVER_NAME = '52.29.15.xx'
添加到我的 config.py 中,但随后我在尝试的每个网址上都收到 404(因此该网站根本不再工作)。

我猜问题出在 nginx 上,它传递了一个奇怪的位置或其他东西?

有人知道我该如何解决这个问题吗?欢迎所有提示!

python url nginx flask gunicorn
2个回答
4
投票

好吧,经过一番摆弄后,我发现我的 nginx 配置中有一个错误。实际上,我的配置中的两个地方有以下两行(这就是我没有注意到它的原因):

proxy_set_header Host $http_host;
proxy_set_header Host $host;

这导致 IP 地址在 Flask 请求上下文中出现两次。

我现在删除了第一行,一切又恢复正常了..:-)


0
投票

一般情况下,不需要明确执行

proxy_set_header Host $proxy_host
proxy_set_header Host $http_host
。如果您需要通过
proxy_pass
指令中的内容以外的方式调用服务器,那么您将需要通过
proxy_set_header
进行覆盖。就我而言,在生成 sitemap.xml 时,我得到了两次提到的 IP 地址,最终通过删除这两行(不是非此即彼)解决了这个问题。希望这对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.