所以我得到了一个简单的设置,使用nginx进行静态媒体和负载均衡以及龙卷风作为django的webserver(运行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;
}
Run Code Online (Sandbox Code Playgroud)
由于HTTP预先附加到META密钥,因此我不能只执行proxy_set_header remote_addr $ remote_addr.如果没有找到远程地址键,我能做的就是读取X-Real-IP,但我很好奇是否有更智能的解决方案.
谢谢!