Django获取IP仅返回127.0.0.1

时间:2010-12-22 18:24:01

标签: python django nginx

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

我正在远程访问它,并使用它:

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

我只是不断获得127.0.0.1的IP地址。就像我说我正在远程访问它,因此它不应该提供本地地址。

我认为它可能与gunicorn有关,但我想首先查看这里,看看你们是否有任何见解。

1 个答案:

答案 0 :(得分:25)

get_ip()如何工作?

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

nginx发送到应用服务器的真实IP在我的情况下HTTP_X_REAL_IP通过nginx配置行proxy_set_header X-Real-IP $remote_addr;

因此,您可能需要设置该功能,并在django app帐户中设置不同的标头,方法是使用新的IP标头或设置request.META['REMOTE_ADDR'] = request.META['HTTP_X_REAL_IP']