我有一个在一个群集下运行的Docker容器内运行的Flask应用程序。当我使用url_for
为API创建外部URL时,它返回docker服务名称而不是绝对路径。
防爆。
endpoint = url_for('api_v1.get_me_the_data', sn=123,
_external=True, _scheme="https")
返回类似https://app-primary:8000/api/v1/devices/123
的东西。
其他详情:
我试过玩SERVER_NAME
,但没有骰子。有没有一种简单的方法来解决这个问题?或者我应该为url_for
写一个包装函数?
因为你有一个容器内的python应用程序,也在Nginx后面,那么你可能需要使用ProxyFix,它会做两件事:
REMOTE_ADDR
获取客户端IP而不是nginx容器IPHTTP_HOST
来设置主机名接下来,您需要确保nginx发送这些标头:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;