엔지니어링

[NGINX] Reverse Proxy 사용시 Backend Server에 Origin URI 전달

Rey 2017. 6. 4. 22:38

Web Server를 사용할 때 최근에 Apache Web Server 보다 Nginx Web Server를 많이 사용을 한다.


Apache 에서 제공하는 기능을 다 지원을 하면서 설정을 간결하고 성능도 잘 나온다.


대부분 PHP, Java Web Application을 사용할 때 Frontend에 Reverse Proxy로 Nginx를 세팅해서 부하 분산도 하는 구조로 많이 사용을 한다.


이렇게 Reverse Proxy로 설정하는 경우 문제가 Backend에 접속 IP를 확인하기 위해 HTTP 해더 중 RemoteAddr을 이용해서 확인하는 경우 Reverse Proxy IP 주소가 나와서 로그 분석이나 그런 처리를 하는데 문제가 있다.


Nginx Reverse Proxy를 이용하는 경우 이러한 경우에 HTTP 해더에 커스텀한 해더나 Extend 해더를 설정해서 Backend로 전달을 할 수 있다.


방법은 아래와 같다.


location / {

proxy_set_header X-Original-URI $request_uri;

}


위에는 X-Original-URI를 넣은 경우나 X-Forwarded-URI의 경우 아래와 같다.


location / {

proxy_set_header X-Forwarded-URI $request_uri;

}


이렇게 했을 때 JAVA의 경우 Application 단에서 아래와 같이 해서 확인이 가능하다.


HttpServletRequest 타입인 request 변수가 있을 때 request.getHeader("X-Original-URI"); 혹은 request.getHeader(X-Forwarded-URI); 로 확인 할 수 있다.

'엔지니어링' 카테고리의 다른 글

MySQL LAST_INSERT_ID  (0) 2018.03.20
[LINUX] 가상 서버에서 tomcat 구동시 오래 걸리는 경우  (0) 2018.03.16
[LINUX] /etc/fstab 옵션  (0) 2017.06.05