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

适用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");
    }
发布了67 篇原创文章 · 获赞 24 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/lp840312696/article/details/104476752