通过Load-Balancer替代从Web应用程序获取客户端IP

如果Web应用程序服务器(例如nginxphp-fpm )位于Load-Balancer之后,例如AWS-ELB

Client -> Load-Balancer -> Web Application server

从Web应用程序获取真正的客户端IP有两种方式来实现我:

  1. 在Web服务器上处理转发IP,如设置nginx真实IP模块 。

  2. 处理Web应用程序上的转发IP,例如通过从信任代理转发头来获取IP。

哪一种方法更好? 或者还有其他更好的方法吗?

谢谢。

最后,我决定通过nginx真正的IP模块来处理Web服务器上的转发IP。

优点:

  1. 在Web服务器上处理也可以解决access.log IP问题。

处理应用程序也需要为Web服务器做同样的事情,使访问日志具有正确的IP。

  1. 多一点的performance。

  2. Web应用程序不需要知道networking结构太深,这可以提高工作规范。


如果您使用Apache作为Web服务器, mod_remoteip模块可以为真正的IP做同样的事情。