Apache HTTP 服务器版本 2.4 - 如何获取真实 IP 地址 - Centos 7

Apache HTTP 服务器版本 2.4 - 如何获取真实 IP 地址 - Centos 7

我有一个 mod_jk httpd 服务器(服务器 ip:dummy1),它位于负载均衡器(服务器 ip:0.876.123.12 和 0.876.123.13)后面。基本上,当请求进入时,它会转到负载均衡器,然后转到 httpd 服务器(服务器 ip:dummy2),然后转到部署在 tomcat9 web 服务器(服务器 ip:dummy3)上的我的应用程序。

请注意,我添加了虚拟服务器 IP,以防我需要引用它们并显示它们位于不同的机器上。

我的应用程序当前显示的是负载均衡器的 IP,而不是使用该应用程序的客户端的 IP。

我显示ip的代码如下:

 String ipAddress1 =httpServletRequest.getRemoteAddr() - this one gets load balancer ip

 String ipAddress2 = httpServletRequest.getHeader("X-Forwarded-For"); - this one is null

根据在线资源,我发现 apache 的 mod_remoteip 模块应该可以解决我的问题,我的配置如下:

来自/etc/httpd/conf/httpd.conf

# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

我假设它将加载所有文件/etc/httpd/conf.d路径。因此我创建了一个文件mod_remoteip配置文件在路径中/etc/httpd/conf.d如下:

# Load the mod_remoteip.so module.
LoadModule remoteip_module modules/mod_remoteip.so
# Set the RemoteIPHeader header.
RemoteIPHeader X-Forwarded-For
# Set the back-to-origin IP addresses.
#RemoteIPInternalProxy 0.876.123.12 0.876.123.13
RemoteIPProxiesHeader X-Forwarded-By

创建文件后,我重新启动了 httpd 服务器,但仍然得到与之前相同的行为,即:

   String ipAddress1 =httpServletRequest.getRemoteAddr() - this one gets load balancer ip
    
     String ipAddress2 = httpServletRequest.getHeader("X-Forwarded-For"); - this one is null

有人能指出我做错什么吗?

提前致谢

相关内容