반응형
가장 기초적인 단계로는 우분투 서버 한 대에 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; # 내 프로젝트의 에러 로그만 확인
반응형
'개발 이야기 > Linux' 카테고리의 다른 글
Nginx Response header 커스터마이징하기 (0) | 2022.02.04 |
---|---|
디렉토리 용량 구하기 (0) | 2020.12.10 |
Ubuntu 16.04 & Python 3.6 사용할 때 mysqldb, uwsgi 에러 발생시 해결 (0) | 2020.11.27 |
특정 포트를 점유중인 프로세스 종료하기 (0) | 2020.11.27 |
Ubuntu 16.04 Flask, django uwsgi 서비스 등록하기 (0) | 2020.11.27 |
댓글