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

Hul*_*ulk 8 python django

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

Ofr*_*viv 10

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

或者更好,看看django书,第15章 - 什么是中间件?和反向代理支持(X-Forwarded-For Middleware)部分.

  • 请注意,X-Forwarded-For中间件已被弃用/删除了最近的Django版本,因为它决定它可能会让开发人员误认为X-Forwarded-For标头实际上可以依赖(它不能).很容易写自己的; 请注意,它很容易被欺骗. (2认同)