解决java获取客户端ip同值问题

接到这样一个问题,系统需要记录客户端请求的ip地址来做ip黑名单的限制,但是拿到的ip地址总是一样,究其原因是因为用nginx做了代理,没有把客户端真是的ip信息带过去
解决办法
要在后端自动获取客户端的真实 IP 地址,而不是硬编码写死,通常需要在代理服务器或负载均衡器上设置正确的配置,以便将客户端的真实 IP 地址传递给后端应用。这是因为在一些情况下,客户端的真实 IP 地址会被代理服务器隐藏掉,导致后端无法直接获取。
配置反向代理服务器:如果你使用反向代理服务器(如 Nginx、Apache 等),可以在代理服务器的配置中添加相应的指令,将客户端的真实 IP 地址传递给后端应用。例如,在 Nginx 中可以通过设置 proxy_set_header X-Real-IP $remote_addr; 来传递客户端真实 IP。
总的来说,要自动获取客户端的真实 IP 地址,你需要在代理服务器、负载均衡器或应用服务器等环节做出相应的配置调整,确保客户端的真实 IP 地址能够被正确传递给后端应用程序
要在 Nginx 配置中获取客户端真实 IP 地址并传递给后端服务器,你可以通过设置 Nginx 的代理头部来实现。下面是一个简单的示例:
nginx
server {
listen 80;
server_name your_server_name;
location / {
proxy_pass http://your_backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
在这个示例中,proxy_set_header X-Real-IP $remote_addr; 和 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 分别设置了 X-Real-IP 和 X-Forwarded-For 头部,将客户端的真实 IP 地址传递给后端服务器。
通过这样的配置,Nginx 将会在转发请求到后端服务器时附加上客户端的真实 IP 地址信息,使得后端服务器能够获取到正确的客户端 IP 地址。
请根据实际情况替换 your_server_name 和 your_backend_server 为你自己的服务器名称和后端服务器地址。
配置完成后,重启 Nginx 以使配置生效。之后,你的后端应用将能够从 Nginx 转发的请求头中获取到客户端的真实 IP 地址。