[工具方法]Java Web应用里获取用户真实IP地址(Nginx等反向代理也有效)

2021-01-14 10点热度 0人点赞 0条评论

直接上工具方法

/**
     * 获取访问用的真实IP,无视nginx等反向代理软件
     * @param request
     * @return ip地址
     */
    public static String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("X-Real-IP");
        if (!StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) {
            return ip;
        }
        ip = request.getHeader("X-Forwarded-For");
        if (!StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) {
            // 多次反向代理后会有多个IP值,第一个为真实IP。
            int index = ip.indexOf(',');
            if (index != -1) {
                return ip.substring(0, index);
            } else {
                return ip;
            }
        } else {
            ip = request.getRemoteAddr();
            return ip;
        }
    }

 

Terry

文章评论

*

code