REMOTE_ADDR没有使用nginx龙卷风发送给Django

所以我有一个简单的设置与nginx静态媒体和负载平衡和龙卷风作为web服务器django(4服务器运行).我的问题是remote_addr没有被传递给django,所以我得到一个KeyError:

article.ip = request.META [‘REMOTE_ADDR’]

由于nginx.conf,远程地址通过X-Real-IP(HTTP_X_REAL_IP)发送:

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect false;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://frontends;
    }

由于HTTP被添加到META密钥中,我不能仅仅做proxy_set_header remote_addr $remote_addr.如果没有找到远程addr密钥,我可以做的是阅读X-Real-IP,但如果有一个更智能的解决方案,我很好奇.

谢谢!

最佳答案
尝试这个:

location / {
    proxy_pass http://frontends;
    proxy_pass_header Server;
    proxy_redirect off;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header REMOTE_ADDR $remote_addr;
}

只需添加proxy_set_header REMOTE_ADDR,它应该可以正常工作.

与:

> Django 1.5.4
> Nginx 1.4.3
>龙卷风2.2.1

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。