본문 바로가기

WEB & WAS/Tomcat

nginx tomcat 연동

반응형

개요

nginx의 proxy 기능을 사용하여 tomcat 연동

구성환경

CentOS 7.6 / nginx-1.17.7 / tomcat 9

 

톰캣에 기본 내장된 examples 어플리케이션과 연동하는 예제

 

단계 1) nginx 구성

1. nginx.conf

sserver {
        location /examples {     => context root
            proxy_pass http://localhost:8080;  => tomcat http 주소
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $http_host;
            proxy_set_header X-NginX-Proxy true;
        }
}  

*  X-Forwarded-For :  http 헤더에 X-Forwarded-For 라는 Custom 헤더 추가, 이 헤더에  클라이언트 IP( $proxy_add_x_forwarded_for)값을 삽입해서  tomcat에 포워딩

* X-Real-IP :  X-Forwarded-For 와 동일

* HOST :  HTTP의 host 헤더 정보를 톰캣으로 포워딩시 클라이언트에서 요청한 host 헤더값으로 포워딩

* X-NginX-Proxy : 옵션, 생략 가능

 

단계 2) tomcat server.xml 수정

- tomcat에서는 실제 작업을 하지 않아도 연동은 된다. 다만, 클라이언트 접속 로그 기록이 기본 적으로 nginx의 호스트 ip가 기록이 됨으로 실제 접속 클라이언트 IP가 기록되도록 이부분을 변경을 해 주도록 하자.

%h%{x-forwarded-for}i  변경, x-forwarded-for로 넘겨진 인자를 access_log 파일에 기록

변경전

<Valve className=org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

변경후

<Valve className=​org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%{x-forwarded-for}i %l %u %t "%r" %s %b" />

**  X-Real-IP 헤더를 사용한다면 %{x-real-ip}i 를 사용하면 된다.

반응형

'WEB & WAS > Tomcat' 카테고리의 다른 글

nginx + tomcat 클러스터링 구성  (0) 2020.01.19
[Tomcat] Context간 세션 공유  (0) 2019.09.29
[Tomcat] Clustering(클러스터링)  (0) 2019.08.27
[Tomcat] WAR 파일 배포  (0) 2019.08.25
[Tomcat] Context 추가  (0) 2019.08.23