ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Tomcat과 Nginx를 연동 (도메인 연결)
    IT, 프로그래밍/Linux 2018. 8. 21. 01:32

    AWS를 사용하던 중.. 톰캣으로 배포중인 스프링 서비스에 도메인으로 접근 시켜야 할 일이 생겼다.


    문제는 IP로 접근하는 http 요청은 80 포트로 받는다는 것이다.


    HTTP 웹 서버인 Apache나 Nginx는 80포트를 사용하지만, 톰캣은 8080 포트를 사용한다.


    문제가 잘 이해가 되지 않는다면, 만약 내가 www.great.com 이라는 도메인을 가지고 있고, 내 EC2의 IP는 53.214.111.38 이라고 할 때, 누군가 www.great.com 으로 접근하였을 때 DNS 서버에서 53.214.111.38 이라는 IP를 리다이렉트 해 주고, 이것은 내 EC2의 80포트로 요청이 들어오고 Service로 대기 하고 있던 HTTP 웹 서버가 냉큼 그 요청을 받아서 처리한다.


    이때, 별다른 세팅이 없다면 HTTP 웹서버에서 기본적으로 제공해 주는 페이지는 Hello World! 같은 느낌의 index 페이지 이다.


    내가 하고 싶은건 도메인을 톰캣 8080에서 대기하고 있는 스프링 프로젝트로 연결시키는 것이지, 그런 촌스러운 페이지를 제공해 주는게 아니다. 


    그럼 어떻게 해야할까?


    80포트로 요청이 왔을 때 톰캣 8080포트로 리다이렉트 하도록 설정하면 된다.



    1. Nginx 설치.


    1
    sudo apt-get install nginx
    cs


    만약 아파치가 이미 설치되어 있는 상태라면, 깨끗히 아파치를 지우고 시작하자. 왜냐하면 nginx와 apache 둘 다 80 포트를 사용하는 웹 서버이기 때문에 충돌이 일어난다.


    2. default 설정 파일을 연다.


    1
    sudo vim /etc/nginx/sites-available/default
    cs


    3. location에 프록시 설정 추가 


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
     
     
            proxy_pass http://localhost:8080;
            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;
     
            }
     
    cs


            proxy_pass http://localhost:8080;
            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;


    이 구문을 추가해 주면 된다. 기존에 있는 try_files $uri $uri/ =404; 이 구문은 주석처리 해 주자.

    (css가 로드 안되는 현상이 발생함)


    4. nginx 재시작


    1
    2
    sudo service nginx restart
    cs


    이러면 깔끔하게 톰캣으로 리다이렉트 되는 것을 볼 수 있다. 

Designed by Tistory.