JAVA获取客户端IP地址
一 配置nginx
在一些情况下,Web应用可能会被反向代理服务器挡在后面,此时,客户端的请求不会直接传递到Web应用,而是先传递到反向代理服务器。如果此时仍然使用第一种方法获取客户端IP,可能会得到反向代理服务器的IP地址,而不是客户端的IP地址。
这种情况下,可以在反向代理服务器中设置相关的HTTP头,告诉Web应用客户端的真实IP地址,示例代码如下:nginx的配置,X-Real-IP,X-Forwarded-For
location / {
proxy_pass http://example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
二 通过HttpServletRequest获取
一般都是下面代码中的做法:但很多人只知道这样能拿到,稍微有改动就不知道怎么办了。
在Java Web开发中,获取客户端IP地址的最常用方法是通过HttpServletRequest对象获取,示例代码如下:
public static String getIpAdrress(HttpServletRequest request) {
String ip = null;
//X-Forwarded-For:Squid 服务代理
String ipAddresses = request.getHeader("X-Forwarded-For");
System.out.println("====ipAddresses:"+ipAddresses);
Enumeration<String> headerNames = request.<