所以我有一个简单的设置与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,但如果有一个更智能的解决方案,我很好奇.
谢谢!
最佳答案
尝试这个:
原文链接:https://www.f2er.com/nginx/434644.htmllocation / {
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