본문 바로가기
개발 이야기/Linux

Nginx 설정으로 분리된 Web, WAS 연결하기

by _ppuing 2020. 11. 27.
반응형

가장 기초적인 단계로는 우분투 서버 한 대에 nginx 설정을 하고, 같은 공간에 서버 프로그램도 둬서 릴리즈를 하는 경우가 있지만, 이런 경우 Web, WAS(Web Application Server)가 분리되지 않아 보안이 취약할 수 있다. 

보통 Web과 WAS는 다른 Zone으로 분리되어 있으며, WAS는 내부망으로 설정하여 외부에서 어떠한 접속도 하지 못한다. WAS 로는 DMZ Zone 에 있는 Web으로부터 걸러 들어온 요청만 들어올 수 있게 설계하는 것이 가장 좋다. 이는 다음에 AWS Web, WAS 분리에서 다뤄보겠다.

 

우선 Web, WAS 가 분리되어 있다고 하고, WAS는 이전 글에 작성한대로 어플리케이션이 이미 실행중이라고 가정한다.

 

nginx 설정은 아래와 같이 할 수 있다.

sudo vi /etc/nginx/sites-available/myservice

 

upstream myservice {

    server {WAS HOST or IP}:5000; # WAS 가 5000 포트로 돌아가고 있다고 가정

}



real_ip_header X-Forwarded-For;



server {

    listen 80;  # 도메인에서 열어둘 포트 (https를 쓰려면 443으로 설정, 인증서 필요)

    server_name myservice.com;  # 외부에서 요청할 도메인

    

    location / {

        include /etc/nginx/uwsgi_params;

        uwsgi_pass myservice;  # 위에 정의한 upstream으로 요청을 전송함

    }



    access_log /var/log/nginx/myservice_access.log;

    error_log /var/log/nginx/myservice_error.log;

} 

 

위 처럼 설계를 하면  myservice.com:80 으로 요청이 들어왔을 때 WAS:5000 으로 요청이 전달된다.

일단 서비스를 실행하기 전에 sites-available에서 sites-enabled로 설정 파일에 링크를 걸어 준다.

sudo ln -s /etc/nginx/sites-available/myservice /etc/nginx/sites-enabled/myservice

 

기존에 있던 /etc/nginx/sites-enabled/default는 삭제해도 무방하다.

 

서비스 실행/중지/재시작

sudo service nginx start
sudo service nginx stop
sudo service nginx status

 

nginx 로그 확인 하기

sudo tail -f /var/log/nginx/*.log  # 전체 로그 확인
sudo tail -f /var/log/nginx/{myproject}_access.log; # 내 프로젝트의 액세스 로그만 확인
sudo tail -f /var/log/nginx/{myproject}_error.log; # 내 프로젝트의 에러 로그만 확인
반응형

댓글