怎么查服务器的ip地址

最近蘑菇上线了展示IP属地的功能,用户在发表动态、评论以及聊天时都会显示自己的IP属地信息。这一功能在蘑菇群聊中同样适用。接下来,我将介绍如何在Java中获取IP属地,主要分为以下几个步骤:
一、通过HttpServletRequest对象获取用户的IP地址。
二、利用获取的IP地址,去获取对应的省份、城市信息。
我们需要创建一个IP获取的工具类,因为每次用户的Request请求都会携带IP地址在请求头中。
以下是Java中获取IP地址的工具类:
java
public class IpUtil {
public static String getIpAddr(ServerHttpRequest request) {
// 获取请求头中的IP信息
HttpHeaders headers = request.getHeaders();
String ipAddress = headers.getFirst("X-Forwarded-For");
// 如果没有获取到或者使用代理的情况下,尝试获取其他形式的IP
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = headers.getFirst("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = headers.getFirst("WL-Proxy-Client-IP");
}
// 如果以上方式都无法获取,则获取远程地址的IP
if (ipAddress == null || ipAddress.isEmpty()) {
IpAddress ip = request.getRemoteAddress();
ipAddress = ip.getHost();
}
// 处理通过多个代理的情况,取第一个IP为客户端真实IP
if (ipAddress != null && ipAddress.contains(",")) {
ipAddress = ipAddress.split(",")[0];
}
return ipAddress;
}
这里涉及的一些HTTP头部信息解释:
- X-Forwarded-For:一个HTTP扩展头部,为了让Web服务器获取访问用户的真实IP地址。在通过代理的情况下,每个IP地址通过逗号分隔,最左边的是最原始客户端的IP地址。
- X-Real-IP:一般只记录真实发出请求的客户端IP。
- Proxy-Client-IP:这个头部信息一般在经过Apache http服务器时添加,用于记录客户端的IP。
- WL-Proxy-Client-IP:也是通过Apache http服务器,在weblogic插件添加的头信息。
获取到用户的IP地址后,就可以进一步获取对应的ip信息了。蘑菇最初使用的是淘宝IP库。
