java获取用户ip地址

/**
     * 获取请求IP
     * 参考:https://www.cnblogs.com/mypath/articles/5239687.html
     * A同学和B同学在同一局域网内请求接口 https://xxx.com/abc-service/vcode/send 得到的结果(经过了nginx):
     *
     * A同学:
     * X-Real-IP:1.96.130.81
     * X-Forwarded-For: 121.125.171.194, 1.96.130.81
     *
     * B同学:
     * X-Real-IP:1.96.119.104
     * X-Forwarded-For: 121.125.171.194, 1.96.119.104
     *
     *
     * @param request
     * @return
     */
    public static String getRequestIpAddress(HttpServletRequest request) {
        String ipAddress = null;

        if (org.apache.commons.lang3.StringUtils.isEmpty(ipAddress) || org.apache.commons.lang3.StringUtils.isBlank(ipAddress) || "unknown".equalsIgnoreCase(ipAddress))
            ipAddress = request.getHeader("X-Real-IP");
        if (org.apache.commons.lang3.StringUtils.isEmpty(ipAddress) || org.apache.commons.lang3.StringUtils.isBlank(ipAddress) || "unknown".equalsIgnoreCase(ipAddress))
            ipAddress = request.getHeader("X-Forwarded-For");
        // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
        if (ipAddress != null && ipAddress.length() > 15) {
            if (ipAddress.indexOf(",") > 0) {
                ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
            }
        }
        return ipAddress;
    }

通过java获取请求用户IP地址:

一定要看下这个文章再往下看: https://www.cnblogs.com/mypath/articles/5239687.html

A同学和B同学在同一局域网内请求接口 https://xxx.com/abc-service/vcode/send 得到的结果(经过了nginx):

A同学:

X-Real-IP:1.96.130.81

X-Forwarded-For: 121.125.171.194, 1.96.130.81

B同学:

X-Real-IP:1.96.119.104

X-Forwarded-For: 121.125.171.194, 1.96.119.104