JAvaアクセスのIP取得

1541 ワード

	//X-Forwarded-For:Squid     
    String ipAddresses = request.getHeader("X-Forwarded-For");

    if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
        //Proxy-Client-IP:apache     
        ipAddresses = request.getHeader("Proxy-Client-IP");
    }

    if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
        //WL-Proxy-Client-IP:weblogic     
        ipAddresses = request.getHeader("WL-Proxy-Client-IP");
    }

    if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
        //HTTP_CLIENT_IP:       
        ipAddresses = request.getHeader("HTTP_CLIENT_IP");
    }

    if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
        //X-Real-IP:nginx    
        ipAddresses = request.getHeader("X-Real-IP");
    }

    //          ,      ip     ,        (,)    ,     ip       IP
    if (ipAddresses != null && ipAddresses.length() != 0) {
        ip = ipAddresses.split(",")[0];
    }

    //       ,     request.getRemoteAddr();  
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
        ip = request.getRemoteAddr();
    }

    // ip  
    if (ip.equals("127.0.0.1") || ip.endsWith("0:0:0:0:0:0:1")) {
        //           IP
        return "127.0.0.1";
    }