服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址

在使用nginx做代理时,服务端如果直接从 X-Forwarded-For 头部获取来源IP,将获取到nginx所在的ip地址,而不是请求的真实ip地址。

如何获取请求的真实IP地址

首先,在nginx配置中添加如下配置

server {
    listen       80;
    server_name  www.wenki.info;    #要访问的域名

    charset utf8;

    location / {
        proxy_pass       http://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;
    }
}

从nginx中将请求来源IP添加到代理请求头部,然后使用命令重新加载配置

nginx -s reload

 

服务端使用以下代码即可获取请求主机真实IP地址

public static String realIP(HttpServletRequest request) {
    String xff = request.getHeader("x-forwarded-for");
    if (xff != null) {
        int index = xff.indexOf(',');
        if (index != -1) {
            xff = xff.substring(0, index);
        }
        return xff.trim();
    }
    return request.getRemoteAddr();
}

 

转载于:https://www.cnblogs.com/wenhui92/p/7594493.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值