SpringBoot学习笔记31——通过nginx代理服务端获取客户端真实ip

狂风中的少年 提交于 2020-02-27 10:52:06

适用nginx代理之后,在服务端就获取不到客户端真实的ip了,需要添加一下参数

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #保留代理之前的真实客户端ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录代理过程

添加位置如下:

server {
        #侦听18105端口
        listen       18105;

        #定义使用 www.nginx.cn访问
        server_name  localhost;

        #charset koi8-r;

        省略。。。

        location / {
	        root    /home/webfile/wuliuyuan/dist;
	        index  index.html index.htm;
	        # 动态页面
	        if ( !-e $request_filename) {
	            proxy_pass       http://192.168.144.171:8106;
	        }
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr; #保留代理之前的真实客户端ip
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录代理过程
            }    
}

在服务端通过Request获取到客户端真实的ip地址代码如下:

private String getRemoteIP(HttpServletRequest request) {
        if (request.getHeader("x-forwarded-for") == null) {
            return request.getRemoteAddr();
        }
        return request.getHeader("x-forwarded-for");
    }

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!