Nginx에서 sites-available 폴더에 .conf 파일을 추가해서 가상서버를 만들어보자.
환경 및 선수조건
- Nginx(nginx/1.10.0 (Ubuntu))
- Nginx의 기본 사용법 및 서버 블록에 대한 이해
Nginx의 기본 파일과 폴더들
Ubuntu에서 apt-get을 통해 nginx 설치하기 및 간단한 정리에서 간단하게 정리를 해두긴 했지만 설정을 하기에 앞서서 간단하게 몇가지 기본 폴더들과 파일들을 보고 가겠습니다.
sites-available
: 가상 서버 환경들에 대한 설정 파일들이 위치하는 부분입니다. 가상 서버를 사용하거나 사용하지 않던간에 그에 대한 설정 파일들이 위치하는 곳입니다.sites-enabled
:sites-available
에 있는 가상 서버 파일들중에서 실행시키고 싶은 파일을 symlink로 연결한 폴더입니다. 실제로 이 폴더에 위치한 가상서버 환경 파일들을 읽어서 서버를 세팅합니다.nginx.conf
: Nginx에 관한 설정파일로 Nginx 설정에 관한 블록들이 작성되어 있으며 이 파일에서sites-enabled
폴더에 있는 파일들을 가져옵니다.
nginx 가성서버 파일 생성
위에서 말씀드린대로 sites-available
에 가상 서버 환경 파일을 작성하시면 됩니다.
가상 서버 환경 파일을 만들고 vim
으로 열어줍니다.
$ cd /etc/nginx/sites-available
$ sudo touch [virtual_server_conf_file_name]
$ sudo vim [virtual_server_conf_file_name]
Nginx 가상서버 파일 작성
열어둔 설정 파일에 아래처럼 기본적인 블록
들을 작성합니다.
[domain name], [upstream name] 그리고 [web root directory path]는 원하는 서버 환경에 따라서 넣어주시면 됩니다.
간단하게 server block
만 추가하면 아래와 같습니다.
virtual_server_conf_file_name(no SSL)
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name [domain name];
location / {
try_files $uri $uri/ =404;
}
}
아래는 SSL을 적용한 저희 서비스의 모습입니다.
virtual_server_conf_file_name(SSL)
upstream [upstream name] {
server unix://[unix socket file path];
}
server {
listen 443 ssl;
root [web root directory path];
index index.html index.htm;
server_name [domain name];
# SSL Setting below
...
# SSL Setting above
location / {
try_files $uri $uri/ =404;
}
location /api {
...
}
# SSL Setting (Let's Encrypt)
location ~ /.well-known {
allow all;
}
}
server {
listen 80;
listen [::]:80;
server_name [domain name]];
return 301 https://$host$request_uri;
}
sites-enabled에 symlink 생성하기
이제 sites-available
에 있는 파일들에 대해서 sites-enabled
에 symlink를 추가합시다.
$ cd /etc/nginx/sites-enabled
$ sudo ln -s /etc/nginx/sites-available/[config file name] /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/[config file name] /etc/nginx/sites-enabled/
Nginx 재시작하기
이제 Nginx에 문법이 제대로 되어있는지 확인하고 재시작을 합니다.
제대로 재시작이 완료가 되면 OK
라고 나와야 합니다.
$ sudo nginx -t
// 재시작은 아래에 있는 명령어 중 하나로 실행하시면 됩니다.
$ sudo service nginx restart
$ sudo systemctl restart nginx
$ sudo /etc/init.d/nginx restart