使用Nginx反向代理后获取真实请求者ip
在配置文件中的server配置
- proxy_set_header Host:获取客户端(client)的真实域名和端口号;
- proxy_set_header X-Real-IP:获取客户端真实 IP;
- proxy_set_header X-Forwarded-For:也是获取客户端真实 IP,如果有多层代理时会获取客户端真实 IP 及每层代理服务器的 IP;
- proxy_set_header X-Forwarded-Proto:获取客户端的真实协议(如 http、https)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
就可以使用request.getHeader(““x-forwarded-for”)获取真实ip
@Component
public class AccessInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String realId = request.getHeader("x-forwarded-for");
StringBuffer url = request.getRequestURL();
System.err.println("地址:"+realId+",请求了您的服务器");
System.err.println("请求路径为:"+url.toString());
return true;
}
}