在Django中,为什么REMOTE_ADDR会在web服务器上返回127.0.0.1?
当你使用 request.META['REMOTE_ADDR']
这段代码来获取IP地址时,在本地系统上运行是没问题的。但是当你把它放到网络服务器上时,得到的IP地址却是127.0.0.1。这种情况该怎么解决呢?
2 个回答
2
如果你在使用代理服务器,并且你的网页服务器是Apache,你可以使用mod_rpaf这个工具。这个代理只需要发送一些特定的信息,比如X-Forwarded-For或者X-Real-IP这些头部信息。
10
你的网络服务器可能是在一个负载均衡器后面。你可以试着使用 request.META['HTTP_X_FORWARDED_FOR'] 来获取一些信息。
或者更好的是,看看这本 Django 书籍的第15章 - 里面有关于 中间件是什么? 和 反向代理支持(X-Forwarded-For 中间件) 的内容。