微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java获取nginx反向代理的客户端真实ip(非服务器ip)

在使用Nginx方向代理后

Remote Address代表的就是服务器的ip地址,而不是客户端的ip地址了,想要获取真实ip,就需要在Nginx里面配置

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format main '$remote_addr - $http_x_forwarded_for - $http_x_real_ip';
    access_log  logs/access.log  main;

    sendfile        on;

    keepalive_timeout  65;
	
	upstream tomcat_server_pool{

        #server 172.17.0.14:3000 weight=10;
	#server 172.17.0.14:3001 weight=10;
        server 127.0.0.1:1001 weight=10;

    }


    server {
        listen       80;
        server_name  localhost;

        location / {
		
            proxy_pass http://tomcat_server_pool;
 
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            root   html;
            index  index.html index.htm;
        }


    }



}

  其中X-Real-IP和X-Forwarded-For都是客户端真实地址

Nginx配置好的后,接下来需要在java中进行获取

 public void login(HttpServletRequest request, Model model) {
        String remoteHost = request.getRemoteHost();
        String clientIp = request.getHeader("x-forwarded-for");
        log.info("clientIp:{}",clientIp);
        String proxyClientIP = request.getHeader("Proxy-Client-IP");
        log.info("proxyClientIP:{}",proxyClientIP);

        String xRealIP = request.getHeader("X-Real-IP");
        log.info("xRealIP:{}",xRealIP);

        String host = request.getHeader("Host");
        log.info("host:{}",host);

        String remoteAddr = request.getRemoteAddr();
        log.info("remoteAddr:{}",remoteAddr);


        model.addAttribute("year", TimeUtils.getYear());
        queryIp.judgeIp(model, remoteHost, request.getLocalAddr());
    }

  结果

 

 

Nginx相关命令

/usr/local/webserver/Nginx/sbin/Nginx -s reload            # 重新载入配置文件
/usr/local/webserver/Nginx/sbin/Nginx -s reopen            # 重启 Nginx
/usr/local/webserver/Nginx/sbin/Nginx -s stop              # 停止 Nginx

  

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐