Tomcat은 기본적으로 Apache랑 한 세트라는 느낌인데, 그래서 Nginx를 설치할 때는 전혀 어울리지 않는다고 생각해서 얼씬도 하지 않았다.

그러나 SCIT마스터에서도 계속 배우고 있는 진도 과정이기도 하고, 결국 Java를 어딘가에 올려서 프로젝트할 필요는 있기에, Nginx에 JSP 기능을 다는 것은 어느 정도 피할 수 없는 선택이었다.

Cafe24에서도 한때 철수했다가 지금은 다시 서비스 하는 모양인데, JSP 호스팅과 PHP가 공존하는 서비스도 있고 (cafe24 메뉴에서 64비트 JSP 호스팅 서비스가 그렇다) PHP가 빠진 대신 tomcat이 7에서 8 버전으로 올라갔다. 이 무슨 생색이냐

역시 PHP 구 버전 보는 것 같이 하나 같이 구닥다리 냄새가 나지만, 이쪽도 레거시 때문인지 좀처럼 버전을 올리지 못하고 여러 가지를 동시에 유지하고 있는 것 같다. Tomcat 9이 있는데 그리 관심 받지 못하는 것이 그걸 증명한다.

이미 Nginx가 셋팅되어 있는 환경에 요점만 적으면서 정리해둔다.

        1. 톰캣을 깐다.
          1. # apt-get update
            # apt-get install tomcat8
        2. 더 이상 깔 것은 없어 보인다.
        3. 편하게 home 디렉토리에서 웹 루트로 들어갈 수 있도록 심볼릭 링크를 생성한다.
          1. # ln -s /var/lib/tomcat8/webapps/ ~/webapps
        4. 톰캣이 정상적으로 구동중인지 확인하고, 구동중이지 않으면 실행한다.
          1. # service tomcat8 status
            # service tomcat8 start
        5. nginx.conf (보통 /etc/nginx에 위치) 열고 파일을 수정한다. include가 있는 형식이면 server 절을 include에서 찾아야 할 수 있으니 유의.
          1. 파일 내용에서 http절에 다음줄을 추가한다. /etc/tomcat8/server.xml의 내용을 참고하여 올바른 포트(기본값 8080)를 지정한다.
            1. # for tomcat jsp
                  upstream tomcat {
                      ip_hash;
                      server 127.0.0.1:8080;
                  }
          2. server절을 다음 내용으로 고친다. name이 겹치면 기존의 server 절을 없앨 필요가 있다.
            1. server { # MY DOMAIN
                      listen       80;
                      server_name  mydomain.net;
              
                      location / {
                          proxy_set_header    HOST $http_host;
                          proxy_set_header    X-Real-IP $remote_addr;
                          proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
                          proxy_set_header    X-Forwarded-Proto $scheme;
                          proxy_set_header    X-NginX-Proxy true;
              
                          proxy_pass http://tomcat;
                          proxy_redirect  off;
                          charset utf-8;
                      }
              }
        6. nginx -t 를 실행하여 ok 사인을 확인한 다음 service nginx reload로 적용한다.
        7. 위 server_name과 같은 도메인을 입력하여 잘 작동하는지 확인한다.

apt-get install tomcat8-examples 해서 예제를 깔아주면 JSP와 서블릿이 부드럽게 돌아가는 것을 확인할 수 있다.

8080을 굳이 칠 필요가 없고, 기존의 php 서버와도 충분히 공존할 수 있음을 확인했다. 이제 SSL이 적용되어도 잘 되는지, 신규 도메인 적용 후 확인해볼 필요가 있겠다.

덧… 당연히 SSL / TLS 적용도 무사히 성공했다. 이제 서비스도 같이 할 수 있을 것이다.