python - Django 获取 IP 只返回 127.0.0.1

标签 python django nginx

我有一个使用 gunicorn、nginx 和 django 设置的网络服务器。

我正在远程访问它,并且:

def testIP(request):
    ip_address = utils.get_ip(request)

我一直在获取 127.0.0.1 的 IP 地址,就像我说的,我正在远程访问它,因此它不应该提供本地地址。

我觉得可能跟gunicorn有关系,不过还是想先看看这里,看看各位有没有什么见解。

最佳答案

get_ip() 是如何工作的?

如果 nginx 是反向代理而 gunicorn 是应用服务器,它总是从本地机器上的 nginx 获取请求。

nginx 发送到应用服务器的真实 IP 在我的例子中是 HTTP_X_REAL_IP 通过 nginx conf 行 proxy_set_header X-Real-IP $remote_addr;

因此您可能想要设置它,并在您的 django 应用程序帐户中使用新的 IP header 或设置 request.META['REMOTE_ADDR'] = request .META['HTTP_X_REAL_IP']

关于python - Django 获取 IP 只返回 127.0.0.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512341/

相关文章:

SSL 实验室 - HSTS 不工作 - Nginx

php - 如何配置 Nginx 以将特定请求模式路由到托管 Symfony 应用程序的特定 php-fpm 上游?

tomcat - 请求上下文路径 grails spring security

python - 使用箭袋绘制矢量场

django设置cookie和删除cookie

python - 如何在 PIL ImageDraw 中增加多边形的厚度

python - Django:为生产中的网站设置高效的日志系统

python - 为什么python找不到我安装了django-lockdown的这个模块?

python - 警告 :tensorflow:Compiled the loaded model, 但尚未构建已编译指标

python - 删除长子命令帮助输出?