nginx - 无法通过 nginx-gunicorn 在烧瓶应用程序中获取标头
问题描述
我正在尝试获取访问该站点的用户的真实 IP 地址。为此,我想为 API 服务添加自定义授权。在这两种情况下使用标头似乎是个好主意。
问题是我无法在由 nginx 和 gunicorn 网络服务器提供的烧瓶应用程序中获取自定义标头。获取“remote_addr”标头仅返回 127.0.0.1 IP 地址,尽管我是从外部网络发布的,而不是从本地主机发布的。
这是我的配置文件:
nginx 配置的一部分 //1.14.2
location / {
# forward application requests to the gunicorn server
proxy_read_timeout 30s;
proxy_send_timeout 30s;
proxy_connect_timeout 30s;
proxy_pass http://127.0.0.1:5000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
add_header CLIENT-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
gunicorn 配置的一部分 //20.0.4
[program:wapp]
command=/home/deeslo/processor/venv/bin/gunicorn -b localhost:5000 -w 4 microservice:app
directory=/home/deeslo/processor
user=deeslo
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
当我检查标头时,我看不到来自 nginx 的 X-Real-IP/CLIENT-IP 以及我在烧瓶中发送的其他自定义标头都没有生成响应标头。
我错过了什么?还不能解决。
解决方案
哦,那完全是我的错。
问题是我在我的 IDE 中调试应用程序,该应用程序通过嵌入式 Web 服务器而不是 nginx 运行。
上面的解决方案很完美,我可以在烧瓶应用程序中获取用户 IP 地址:
request.header['X-Real-IP']
推荐阅读
- ruby - Google Analytics API ruby 客户端 - 多个指标
- google-analytics - Google Analytics 事件 - 日期范围值
- javascript - 从范围输入中检索实时值以在另一个函数中使用
- awk - AWK (igawk) @include 语句失败
- python - 由于 AttributeError,在 PyCharm 中导入 matplotlib.pyplot 失败:模块“PyQt5.QtGui”没有属性“QApplication”
- scala - 根据scala spark中的键合并数据框中的多条记录
- sql-server - 如何使用 getdate() + 20 秒插入每一行
- batch-file - 通过拖放处理文件和文件夹,过滤文件类型
- wpf - WPF 无法为添加的文件设置构建操作
- c# - c# AES解密希伯来字母显示为问号