Nginx代理后获取客户端真实IP地址

在项目中,通过request.getRemoteAddr()获取IP地址会得到Nginx服务器IP,而非客户端IP。解决方法是在Nginx配置中添加proxy_set_headerX-Real-IP$remote_addr,然后在Java代码中使用request.getHeader(X-Real-IP)获取真实IP。请求头中的X-Real-IP即为客户端IP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、场景

在项目实际应用中,我们可能会需要获取到用户也就是客户端的真实IP地址,比如记录系统操作日志等情况。

2、使用

通常情况下我们可以使用以下方式来获取IP地址

request.getRemoteAddr()

但是当我们使用Nginx反向代理项目地址后,使用以上方法只能获取到Nginx服务器的IP地址,并不是客户端的IP地址。

3、解决

解决方法很简单,同样也是在Nginx中进行配置,然后在Java中获取即可。

首先在nginx.conf配置中添加一行即可:

proxy_set_header    X-Real-IP           $remote_addr;

添加位置如下:

 可以看到我这里还添加了其他的 proxy_set_header 配置,后面都可以自行打印看下效果。

接下来就是在程序中获取真实IP地址了,使用以下代码即可获取到:

String realIP = request.getHeader("X-Real-IP");

注意:getHeader()中的参数名就

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想养一只!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值