因此,我使用 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 key ,我不能只执行 proxy_set_header remote_addr $remote_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 - REMOTE_ADDR 未使用 nginx 和 Tornado 发送到 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1627901/