我有一个使用 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/