在网上看到什么通过X-Forwarded-For,X-Real-IP.我测试都是获取到Nginx的地址(127.0.0.1),
代码如下
/**获取ip工具类 */
public class IpUtil {    /**
     * 穿透反向代理服务器,获取ip地址
     *
     * @param request
     * @return
     */
    public static String getIpThroughProxy(HttpServletRequest request) {
        String ip = request.getHeader("X-Forwarded-For");
        if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
            //多次反向代理后会有多个ip值,第一个ip才是真实ip
            int index = ip.indexOf(",");
            if (index != -1) {
                return ip.substring(0, index);
            } else {
                return ip;
            }
        }
        ip = request.getHeader("X-Real-IP");
        if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
            return ip;
        }
        return request.getRemoteAddr();
    }    /**
     * 获取客户端IP,支持反向代理,如nginx,但不支持正向代理,比如客户端浏览器自己使用代理工具
     * @param request
     * @return 客户端IP
     */
    public static String getClientIP(HttpServletRequest request)
    {
        String ip = request.getHeader("X-Real-IP");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
            ip = request.getHeader("X-Forwarded-For");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
            ip = request.getHeader("Proxy-Client-IP");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
            ip = request.getHeader("WL-Proxy-Client-IP");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
            ip = request.getRemoteAddr();
        return ip;
    }}Controller类:@Controller
public class IndexController {    @GetMapping("/test")
    @ResponseBody
    @RequiresGuest
    public String hello(HttpServletRequest request) {
        String ip1 = IpUtil.getClientIP(request);
        String ip2 = IpUtil.getIpThroughProxy(request);
        System.out.printf("ip1 = %s.ip2 = %s",ip1,ip2);
        return ip1;
    }
}Nginx.conf配置文件:
server {
        listen       80;
        server_name  localhost;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {
            proxy_pass   http://WeChat;
    proxy_redirect off;            proxy_set_header Host $host;            proxy_set_header X-Real-IP $remote_addr;     proxy_set_header REMOTE-HOST $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
        }
    }    upstream WeChat {
server 127.0.0.1:8080;
    }
结果
输出ip1 和ip2都是127.0.0.1