java服务器如何知道客户端请求的ip地址
admin
2024-03-03 09:15:54
0

对于有代理的nginx需要配置一下代理的header:

location / {
          proxy_pass http://127.0.0.1:8080;
        proxy_set_header    Host               $host:$server_port;
        proxy_set_header    Remote_Addr        $remote_addr;
        proxy_set_header    X-Real-IP          $remote_addr;
        proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto  $scheme;
        proxy_set_header    X-Nginx-Proxy      true;

}

然后在java代码中通过请求HttpServletRequest 来读取ip:

public static String getClientIpAddress(HttpServletRequest request) {// 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址String headerName = "x-forwarded-for";String ip = request.getHeader(headerName);if (null != ip && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {// 多次反向代理后会有多个IP值,第一个IP才是真实IP,它们按照英文逗号','分割if (ip.indexOf(",") != -1) {ip = ip.split(",")[0];}}if (checkIp(ip)) {headerName = "Proxy-Client-IP";ip = request.getHeader(headerName);}if (checkIp(ip)) {headerName = "WL-Proxy-Client-IP";ip = request.getHeader(headerName);}if (checkIp(ip)) {headerName = "HTTP_CLIENT_IP";ip = request.getHeader(headerName);}if (checkIp(ip)) {headerName = "HTTP_X_FORWARDED_FOR";ip = request.getHeader(headerName);}if (checkIp(ip)) {headerName = "X-Real-IP";ip = request.getHeader(headerName);}if (checkIp(ip)) {headerName = "remote addr";ip = request.getRemoteAddr();// 127.0.0.1 ipv4, 0:0:0:0:0:0:0:1 ipv6if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {//根据网卡取本机配置的IPInetAddress inet = null;try {inet = InetAddress.getLocalHost();} catch (UnknownHostException e) {e.printStackTrace();}ip = inet.getHostAddress();}}return ip;
}
private static boolean checkIp(String ip) {if (null == ip || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {return true;}return false;
}

相关内容

热门资讯

理想在廊坊成立销售服务新公司 5月26日消息,天眼查App显示,近日,理想智行汽车销售服务(廊坊)有限公司成立,法定代表人为卢青,...
新筑股份筹划重大资产重组,今日... 5月26日消息,新筑股份公告,公司正在筹划资产出售及发行股份购买资产,并视具体情况募集配套资金。公司...
美股周一休市 5月26日消息,受阵亡将士纪念日假期影响,美股5月26日(周一)休市一日,同日,英国股市因春季银行假...
美联储6月维持利率不变的概率为... 5月26日消息,据CME“美联储观察”:美联储6月维持利率不变的概率为94.4%,降息25个基点的概...
特朗普威胁停止向哈佛大学拨款,... 5月26日消息,当地时间25日,美国总统特朗普威胁称,联邦政府将可能不再继续向哈佛大学提供新的拨款,...
5月26日A股盘前要闻 5月26日消息,5月26日A股盘前要闻:1.美国政府宣布取消哈佛大学获得的学生和交流学者项目资质,禁...
八部门:到2030年培育100... 5月26日消息,商务部、国家发展改革委、教育部、工业和信息化部、交通运输部、农业农村部、税务总局、国...
法网开门红!郑钦文战胜前赛会亚... 5月25日消息,北京时间5月25日,法国网球公开赛首轮,8号种子郑钦文以6-4、6-3击败前赛会亚军...
中信证券:核心资产定价权逐步向... 5月25日消息,中信证券研报表示,本轮A股公司密集赴港IPO是出海战略、制度便利和港股流动性改善三重...
马来西亚5月1-25日棕榈油出... 5月25日消息,据船运调查机构ITS数据显示,马来西亚5月1-25日棕榈油出口量为1,061,589...