一些业务系统,一般有统计客户端IP来源,或者限定等拦截、或者白名单、黑名单等需求,这个时候就需要获取客户端真实的IP。 实际应用中发现,部分业务,获取的客户端 ip 地址不低,写法不统一,nginx 配置不一致。 1、未经过代理,直接访问服务器 客户端请求信息都包含在HttpServletRequest中,对于第一种访问方式可以通过getRemoteAddr()方法获得客户端真实IP,这种方法在大部分情况下都是有效的。 //request.getRemoteAddr(): 192.1.1.1 代码示例: public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); } 但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客户端的真实IP地址了...