因此,我使用 nginx 进行了简单的设置,用于静态媒体和负载平衡,并使用 tornado 作为 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。如果没有找到远程地址密钥,我可以做的是读取 X-Real-IP,但我很好奇是否有更智能的解决方案。
谢谢!