packagecom.hky.front_end_monitor.utils;importjavax.servlet.http.HttpServletRequest;importjava.net.InetAddress;importjava.net.UnknownHostException;/**
* @auther Gpu is all you need
* @date 2022/8/4
*/publicclassIpHelper{publicstaticStringgetRealIp(HttpServletRequest request){String ip = request.getHeader("x-forwarded-for");if(ip ==null|| ip.length()==0||"unknown".equalsIgnoreCase(ip)){//Proxy-Client-IP:apache 服务代理
ip = request.getHeader("Proxy-Client-IP");}if(ip ==null|| ip.length()==0||"unknown".equalsIgnoreCase(ip)){//WL-Proxy-Client-IP:weblogic 服务代理
ip = request.getHeader("WL-Proxy-Client-IP");}if(ip ==null|| ip.length()==0||"unknown".equalsIgnoreCase(ip)){//HTTP_CLIENT_IP:有些代理服务器
ip = request.getHeader("HTTP_CLIENT_IP");}if(ip ==null|| ip.length()==0||"unknown".equalsIgnoreCase(ip)){//X-Real-IP:nginx服务代理
ip = request.getHeader("X-Real-IP");}//有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,并且第一个ip为客户端的真实IPif(ip !=null&& ip.length()!=0){
ip = ip.split(",")[0];}if(ip ==null|| ip.length()==0||"unknown".equalsIgnoreCase(ip)){
ip = request.getRemoteAddr();}if(ip.equals("127.0.0.1")|| ip.equals("0:0:0:0:0:0:0:1")){InetAddress inet;try{
inet =InetAddress.getLocalHost();
ip = inet.getHostAddress();}catch(UnknownHostException e){
e.printStackTrace();}}return ip;}}