我有一个使用gunicorn,nginx和django设置的网络服务器。
我正在远程访问它,并使用它:
def testIP(request):
ip_address = utils.get_ip(request)
我只是不断获得127.0.0.1的IP地址。就像我说我正在远程访问它,因此它不应该提供本地地址。
我认为它可能与gunicorn有关,但我想首先查看这里,看看你们是否有任何见解。
答案 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']