[Ubuntu] Nginx 설정
[Ubuntu] Nginx 설정
이 글에서는 Ubuntu에서 Nginx의 기본적인 설치와 설정에 대해서 정리하고자 한다.
Nginx 설치
Nginx 설치를 위해서는 아래 명령어를 입력해주면 된다.
sudo apt-get install nginx
설치 후 Nginx 실행을 위해서는 아래 명령어 중 하나를 입력해준다.
$ service nginx start
# or
$ sudo service nginx start
# or
$ sudo systemctl start nginx
Nginx 설정
Nginx 관련한 디렉토리 경로는 /etc/nginx이다. 기본적인 환경 설정 파일의 경로는 /etc/nginx/conf.d 디렉토리 하위의 default.conf에 있었다. 혹시나 conf.d 디렉토리 아래에 기본 설정 파일이 없다면 sites-availabe이라는 디렉토리 하위에 있을 수 있다.
Nginx 설정 관련 글을 찾아보면 conf.d, sites-enabled, sites-available 디렉토리를 설정하는게 나오는데 각 디렉토리는 아래와 같은 차이가 있다고 한다.
- conf.d : sites-enabled와 같이 nginx에 반영되는 작업들이 있지만 비활성해야 하는 경우 삭제하거나 변경해야 함
- sites-enabled : 설정 파일을 복사 또는 심볼릭 링크로 걸어줌(nginx에 반영)
- sites-available : 설정을 저장하는 곳(nginx에 반영 X)
각 디렉토리의 용도를 생각해보니 sites-*로 디렉토리 추상화를 통해 작업을 좀 더 체계화하고 별도의 지원 스크립트로 관리 가능하다고 생각되어 conf.d 디렉토리를 사용하지 않고 sites-enabled와 sites-available를 메인으로 사용하고자 했다.
sites-enabled 디렉토리를 Nginx 설정 파일 경로로 사용하기 위해 nginx.conf(Nginx의 기본 설정 파일)에 설정해야 한다. conf.d 디렉토리에 대해서는 비활성화를 위해 #을 붙여 주석처리해주거나 아예 해당 라인을 지워준다.
# /etc/nginx/nginx.conf
...
#gzip on;
#include /etc/nginx/conf.d/*.conf;
// ↓ 이부분 추가
include /etc/nginx/sites-enabled/*;
}
이제 커스텀 설정 파일을 생성하기 위해 sites-available 디렉토리 하위에 test.conf 파일을 생성한다.
$ vi /etc/nginx/sites-available/test.conf
test.conf 파일 속 내용은 아래와 같이 설정해준다.
server {
listen 80;
server_name {localhost 혹은 도메인};
# 정적 서버 연결
location / {
root /{프로젝트 디렉토리};
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
만일, 정적 서버가 아니라 proxy 설정으로 현재 서버에서 돌아가고 있는 애플리케이션?으로 연결해주기 위해서는 아래와 같이 설정하면 된다.
server {
listen 80;
server_name {localhost 혹은 도메인};
location / {
proxy_pass http://localhost:3000;
}
}
참고
앞서 예시를 든 정적 파일 or proxy 연결에서 프로젝트 디렉토리 혹은 파일명, 포트번호는 상황에 따라 변경하면 됩니다.
이제 생성한 test.conf를 sites-enabled 디렉토리에 심볼릭 링크 설정을 아래와 같이 해준다.
$ ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conf
변경 사항을 적용시키기 위해 아래 재실행 명령어 중 하나를 입력해준다.
$ service nginx restart
# or
$ sudo service nginx restart
# or
$ sudo systemctl restart nginx