![通过负载均衡器替代方案从 Web 应用程序获取客户端 IP](https://linux22.com/image/707138/%E9%80%9A%E8%BF%87%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%99%A8%E6%9B%BF%E4%BB%A3%E6%96%B9%E6%A1%88%E4%BB%8E%20Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E8%8E%B7%E5%8F%96%E5%AE%A2%E6%88%B7%E7%AB%AF%20IP.png)
如果是 Web 应用程序服务器(例如nginx&php-fpm)位于负载均衡器后面,例如AWS 的 ELB:
Client -> Load-Balancer -> Web Application server
要从 Web 应用程序中获取真实的客户端 IP,我有两种方法可以实现:
处理 Web 服务器上的转发 IP,如设置nginx真实IP模块。
处理 Web 应用程序上的转发 IP,就像更改为从信任代理通过转发标头获取 IP 一样。
总体来说哪种方法更好?或者还有其他更好的方法吗?
谢谢。
答案1
最后我决定通过以下方式处理 Web 服务器上的转发 IPnginx真实IP模块。
优点:
- 在Web服务器上处理也可以解决access.log IP问题。
在应用程序上的处理也需要对 Web 服务器做同样的事情,以便使用正确的 IP 制作访问日志。
性能稍好一些。
Web应用程序不需要了解太深的网络结构,这可以提高工作规范。
如果您使用 Apache 作为 Web 服务器,mod_remoteip 模块可以对真实 IP 执行相同操作。