我正在尝试在 NGINX 反向代理后面运行 Quart 应用程序,但需要能够使用request.remote_addr
来确定客户端连接的 IP 地址。使用 Flask 执行此操作时,我一直在ProxyFix
这里使用 werkzeug 包:
https ://werkzeug.palletsprojects.com/en/2.0.x/middleware/proxy_fix/
我的 nginx 配置如下所示:
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto "https";
}
然后在 python 代码中,我使用这条路线进行测试:
@app.route('/whatsmyip')
async def whatsmyip():
return request.remote_addr
当请求通过时,他们总是说 remote_addr is 127.0.0.1
,因为那是 nginx 实例的 ip。
任何有关如何使用 nginx+hypercorn+quart 实现此功能的指针将不胜感激。