nginx转发请求后得到客户端真实IP地址

Nginx 和 应用(spring boot程序) 部署 到了同一个 公网服务器。

在访问应用时,需要得到 客户端真实IP地址,需要配置 nginx。

server.location 下配置:

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;

proxy_set_header X-NginX-Proxy true;

配置后,可以通过以下请求头获取 客户端真实IP地址:

x-real-ip

x-forwarded-for

-

// HttpServletRequest request
request.getHeader("x-real-ip")
request.getHeader("x-forwarded-for")
 
测试得到的 请求头名称 和 值如下:
Headers:
name=x-real-ip, val=11.22.33.44
name=x-forwarded-for, val=11.22.33.44
name=host, val=www.example.com
name=x-nginx-proxy, val=true
name=connection, val=close
name=content-length, val=28
name=accept, val=text/plain, application/json, application/*+json, */*
name=cookie, val=JSESSIONID=C3CA21D813B1EF65F0AF115960DFEF6E; Path=/; HttpOnly
name=content-type, val=application/json

注意,上面的 x-nginx-proxy = true。

 

注意,此时使用 request.getRemoteAddr() 获取的值为 0:0:0:0:0:0:0:1 (IPv6地址,类似,127.0.0.1)。

 

---END---

 

ben发布于博客园

ben发布于博客园

 

posted @ 2024-09-28 17:17  快乐的欧阳天美1114  阅读(274)  评论(0编辑  收藏  举报