웹 프록시 사용시 사용자 Real IP 가져오는 방법

NameJM·2024년 8월 7일

Source

  • 자바소스
public static String getClientIP(HttpServletRequest request) {
    String ip = request.getHeader("X-Forwarded-For");

    if (ip == null) {
        ip = request.getHeader("Proxy-Client-IP");
    }
    if (ip == null) {
        ip = request.getHeader("WL-Proxy-Client-IP");
    }
    if (ip == null) {
        ip = request.getHeader("HTTP_CLIENT_IP");
    }
    if (ip == null) {
        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
    }
    if (ip == null) {
        ip = request.getRemoteAddr();
    }

    return ip;
}
  • nginx
server {
	...
    location /api {
      proxy_hide_header Access-Control-Allow-Origin;
      add_header 'Access-Control-Allow-Origin' $http_origin;
      proxy_pass http://127.0.0.1:9082;
      proxy_set_header X-Real-IP $remote_addr; <- 이 부분 추가
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; <- 이 부분 추가
      proxy_set_header Host $http_host;
      rewrite ^/api(.*)$ $1 break;
    }
}

0개의 댓글