우선 nginx의 디렉토리 구조를 이해할 필요가 있다.
나도 자세히는 이해하지 못했기 때문에 우선 이해한 만큼만 적어본다.
여기서는 두 개만 알면 된다.
정리하자면, 설정파일을 우리가 생성하고 수정할 때는 sites-available에 있는 파일을 건드리고 sites-enabled의 파일은 직접 건드리지 않는다.
그런데 nginx는 sites-enabled를 찾아보지 sites-available을 찾아보지 않는다.
그래서 sites-available에서 수정한 파일을 sites-enable의 파일과 링크시켜서 수정 사항이 반영되도록 한다.
(그런데 참고한 영상에서는 바로 sites-enabled의 파일을 수정하던데 별 상관 없는건가 싶기도 하다)
/etc/nginx/sites-available/에 새 설정 파일을 만들어준다.
sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default
sudo touch /etc/nginx/sites-available/myflask
sudo nano /etc/nginx/sites-available/myflask
로 파일을 열어준다.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 0.0.0.0;
location / {
include proxy_params;
proxy_pass http://unix:/home/sammy/myproject/myproject.sock; // gunicorn service 파일에서 socket 파일의 경로
}
}
내 경우 proxy_pass는 http://unix:/home/userme/myproject/myflask.sock
이다.
두 디렉토리의 서로 다른 파일 사이에 심볼릭 링크를 생성해서 연결시키는 작업을 해준다.
sudo ln -s /etc/nginx/sites-available/myflask /etc/nginx/sites-enabled/myflask
ln : link, -s : symbolic
마지막으로 해당 설정 파일에 문법 오류가 없는지 체크하고, 아무 문제가 없으면 nginx를 재시작한다.
sudo nginx -t // 문법 오류 체크
sudo systemctl restart nginx
이제 원격 IP 주소로 접속해서 잘 뜨는지 확인하면 끝!
만약 여기서 잘 안되면 방화벽을 확인해보자. 가상머신의 네트워킹도 확인해보면서 이것저것 시도해보자!
sudo ufw app list
sudo ufw allow 'Nginx Full' // HTTP, HTTPS 모두 접근 허용
sudo ufw status
이 글 덕분에 Flask+Gunicorn+Nginx 구축까지 성공할 수 있었습니다! 감사합니다!!