使用Django,为什么REMOTE_ADDR会在Web服务器上返回127.0.0.1?

时间:2010-01-27 05:57:21

标签: python django

使用request.META['REMOTE_ADDR']代码获取IP时。这在本地系统上工作正常但在托管在Web服务器上时,ip得到的是127.0.0.1 - 如何解决?

2 个答案:

答案 0 :(得分:10)

您的网络服务器可能位于负载均衡器后面。您可以尝试使用request.META ['HTTP_X_FORWARDED_FOR']。

或者更好的是,请查看django book, chapter 15 - 什么是中间件?反向代理支持(X-Forwarded-For Middleware)部分。

答案 1 :(得分:2)

如果您在代理服务器后面并运行apache作为Web服务器,则可以使用mod_rpaf。代理只需要发送X-Forwarded-For或X-Real-IP头。

http://stderr.net/apache/rpaf/