web开发中,经常会获取请求端IP地址,熟悉的同学可能第一时间就想到了
String ip = httpServletRequest.getRemoteAddr();
如果你的客户端和你的服务器是直连的,中间没有经过任何的代理这样是没有问题,如果你是通过了代理服务器访问了后端服务,那么获取到的ip其实是代理服务器的ip。
直连: client --> Server
代理: client --> Nginx --> Server
所以经常会在项目中看到如下获取ip地址的代码:
public static String getIpAddress(HttpServletRequest request) {
String xIp = request.getHeader("X-Real-IP");
String xFor = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotEmpty(xFor) && !"unKnown".equalsIgnoreCase(xFor)) {
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = xFor.indexOf(",");
if (