Java request获取客户端ip,各种apach,nginx等代理后依然正确
2017-02-22 17:15
441 查看
在JSP,Java里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的。但是,如果使用了反向代理软件Apache,Squid,nginx等后,就不能获取到客户端的真实IP地址了。
最近我便是在项目中遇到类似问题,客户端访问,由于web项目是有nginx代理的,得到的ip竟然是服务器的局域ip,并非客服端ip,经过强大的博客,我得到了以下方法,记录总结:
以下方法亲测可用,能获取代理(前)后客户端的ip地址:
最近我便是在项目中遇到类似问题,客户端访问,由于web项目是有nginx代理的,得到的ip竟然是服务器的局域ip,并非客服端ip,经过强大的博客,我得到了以下方法,记录总结:
以下方法亲测可用,能获取代理(前)后客户端的ip地址:
/** * TODO //获得客户端的ip地址 * @param request * @return * @author yqwang * @date 2017年2月22日 下午3:55:40 */ public static String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); } /** * TODO //获得客户端的主机名 * @param request * @return * @author yqwang * @date 2017年2月22日 下午3:55:27 */ public static String getRemoteHost(javax.servlet.http.HttpServletRequest request) { String 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.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip; }
相关文章推荐
- Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- JavaWeb中通过从request请求中获取浏览器类型、系统信息、客户端ip等信息
- lighttpd获取nginx代理客户端真实IP
- java获取客户端以及代理IP地址
- 配置Nginx方向代理后,php获取客户端真实IP