Java 获取客户端ip返回127.0.0.1问题
2011-12-14 17:21
531 查看
Java开发中使用 request.getRemoteAddr 获取客户端 ip ,返回结果始终为127.0.0.1。原因是服务器使用了nginx反向代理。
解决办法:在nginx配置文件nginx.conf中添加 proxy_set_header X-Real-IP $remote_addr;
server {
location ^~ /testweb/ {
root html;
access_log on;
index index.jsp;
proxy_set_header X-Real-IP $remote_addr; //添加此项
proxy_pass http://127.0.0.1:88/testweb/;
}
}
java 代码如下:
public static String getRealIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
解决办法:在nginx配置文件nginx.conf中添加 proxy_set_header X-Real-IP $remote_addr;
server {
location ^~ /testweb/ {
root html;
access_log on;
index index.jsp;
proxy_set_header X-Real-IP $remote_addr; //添加此项
proxy_pass http://127.0.0.1:88/testweb/;
}
}
java 代码如下:
public static String getRealIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
相关文章推荐
- Java 获取客户端ip返回127.0.0.1问题
- 客户端获取ip地址只返回127.0.0.1问题
- Java获取客户端IP(解决苹果和安卓版的微信客户端IP问题)
- Java Web 中通过request请求头获取客户端真实IP
- Java获取客户端真实IP
- java获取客户端真实地址IP
- 关于Java获取本地服务器IP的问题
- Java获取客户端IP地址、MAC地址,根据IP获取地理位置信息代码
- Java代码实现如何获取客户端的IP
- Java实现获取客户端真实IP方法小结
- apache代理时java获取IP的问题
- JAVA服务器端获取客户端远程地址,根据IP获取远程地址,各IP地址查询接口比较
- Java获取客户端Ip
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- JAVA/PHP服务器端获取客户端IP
- java获取本机ip以及客户端ip
- java 获取客户端IP方法
- play framework 获取不到客户端的ip的问题
- Java获取客户端IP
- dhcpd 软件,出现客户端获取ip时间长的问题