[JAVA] Nginx + Tomcat 연결하기 (윈도우 환경) (2)

춤추는 머쉬룸·2024년 1월 17일
1

2024 CNU NHN ACADEMY

목록 보기
5/15
post-thumbnail

저번 포스팅에서 Servlet 클래스를 만들고 Tomcat 으로 실행시키는 것 까지 완료했다. 이번 포스팅에서는 Nginx 를 앞단에 붙이는 것을 해보겠다!

Nginx 와 Tomcat 을 연결할 때는 Reverse Proxy 를 이용한다.
알고 보면 참 간단한데 윈도우 환경에서 설정하는 방법이 잘 안나와있어서 방법을 찾기가 참 힘들었다...

1. Nginx 환경 설정

1-1. Tomcat 관련 내용으로 새로운 conf 파일 만들기

파일 탐색기에서 Nginx 가 설치되어 있는 폴더 내의 conf 폴더에 들어간다.
나는 C:\nginx-1.24.0\conf 폴더에 들어왔다.

이곳에 새로 추가할 conf 파일을 만든다. 나는 servlet.com.conf 라는 이름으로 만들었다. 이곳에 아래의 내용을 작성하고 저장한다. (메모장으로 하면 된다.)

upstream tomcat {
    server 127.0.0.1:8080; 
}

server {
    listen 80;
    server_name servlet.com;
    location / {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_pass http://tomcat;
    }
}
  • upstream tomcat : tomcat 이 현재 localhost:8080 으로 설정되어 있다.
  • listen 80 : 80 포트로 Nginx 를 열겠다.
  • server_name: host 명 (나중에 이 이름을 127.0.0.1 이라고 설정해줄 것이다)
  • proxy_pass http://tomcat : 80 포트로 요청이 들어오면 http://tomcat 으로 redirect 하겠다. 즉, http://127.0.0.1:8080 으로 보내주겠다.

ps. 80 포트 말고 다른 포트로 설정해도 된다. 나는 이미 80 포트를 다른 곳에서 쓰고 있어서 82 포트로 열었다.

다시 이 설정을 정리해보면, 브라우저에서 http://servlet.com:80 을 접속하면 http://127.0.0.1:8080 에게 다시 요청, 즉 tomcat 으로 구동되는 servlet 프로젝트를 불러온다는 것이다.


1-2. nginx.conf 파일에 위에서 만든 파일 include 하기

여기서 정말 삽질을 많이 했다. 리눅스에서는 임의의 conf 파일을 같이 추가할 수 있는 폴더가 따로 있는 것 같은데 윈도우로 하는 방법은 잘 없어서 찾기가 힘들었다...

똑같이 Nginx 가 설치되어 있는 폴더 내의 conf 폴더에 들어간다. 거기서 nginx.conf 파일을 연다. 메모장을 관리자 권한으로 열면 된다.

http 중괄호 내에서 include {tomcat 을 설정한 conf 파일}; 를 추가한다.
나는 include servlet.com.conf; 가 된다.


1-3. host 이름을 설정한다.

  1. cmd 를 관리자 권한으로 실행한다.
  2. hosts 파일이 있는 위치로 이동한다.
    cd C:\Windows\System32\drivers\etc
  3. hosts 파일을 연다. 나는 vim 을 이용해 열었다.
    vim 이 설치되어 있지 않다면 파일 탐색기에서 해당 파일을 찾아 관리자 권한 메모장으로 열어도 된다.
  4. DNS itself 아래에 127.0.0.1 servlet.com 을 추가한다.

이렇게 설정하면 servlet.com 으로 접속하는 경우 127.0.0.1 로 인식하게 된다.
즉, 자체적으로 dns 를 설정한다는 말이다.

막간 vim 명령어!

  • i : 편집모드
  • esc : 보기 모드로 전환
  • wq : 저장하고 나가기
  • wq! : 저장하고 강제로 나가기

1-4. Nginx 를 정지 후 재시작한다.

cmd 에서 Nginx 가 설치된 폴더로 이동해 nginx.exe -s stop 을 하고 nginx.exe 프로그램을 다시 누른다.


2. 잘 동작하는지 확인

브라우저에서 http://servlet.com:82/hello 로 들어간다.

HelloServlet 클래스에서 작성한 내용들이 잘 나오는 것을 확인할 수 있다.

nginx 의 포트는 (나는) 82 (또는 80) tomcat의 포트는 8080 이므로, 전 포스트에서 확인한 tomcat 으로 실행한 것이 아닌 nginx 로 실행됐다는 것을 알 수 있다.

주의 요함이라고 뜨는 것은 http 이기 때문이다. 만약 권한이 없다는 내용이 뜨면 그래도 들어가겠다고 하면 된다.

휴우 성공했다!!!ㅠㅠㅠ

0개의 댓글