[Ubuntu] NginX를 사용하여 서버를 열어보자

호이·2023년 2월 8일
0

Ubuntu

목록 보기
1/4

1. Nginx란?

웹 서버 소프트웨어 중 하나로 가볍고 빠른 장점이 있다. 클라우드 서버로 우분투나 리눅스환경에서 서버를 구동할 경우 사용된다. 클라우드 서버는 물리적인 컴퓨터가 존재하는 것이 아닌 클라우드 기반으로 만들어진 서버로 해당 서버를 제어하기 위해서는 putty라는 프로그램이 필요하다.

2. 사용하기

다음의 명령어를 터미널에 입력하여 Nginx를 설치한다.

sudo apt-get update
sudo apt install nginx

/etc/nginx/ 경로 아래 sites-available폴더에는 default파일 원본이 있고 sites.enabled폴더 안에는 default의 바로가기 파일(심볼릭 링크) 가 존재한다. 이 바로가기 파일이 없는 경우 서버가 실행되지 않는다. sites-available안에 다른 파일을 만든 경우 sites-enabled폴더에 만든 파일의 심볼릭 링크(바로가기) 파일을 생성해 줘야 한다. vi 에디터를 사용하여 nginx의 기본 default파일의 root 경로를 수정한 후 심볼릭 링크를 생성해도 된다. 다음 명령어를 터미널에 입력하여 default파일을 편집할 수 있다.

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

default에서 listen 80은 포트 80에 대한 설정이고 location / 는 URL이 ‘/’가 포함된 경로에 대한 설정을 의미한다. root는 실행할 파일들의 루트 위치를 의미하고 프로젝트의 파일 경로를 입력하면 된다. index는 인덱스의 파일들을 지정하는 곳이고 이 파일들 중 꼭 하나는 root경로 안에 존재해야 한다. try_files는 어떤 파일을 찾을 때 명시된 순서로 찾으며 가장 먼저 발견되는 파일을 사용한다는 의미이다.

/etc/nginx/sites-available/경로에 있는 default파일을 수정하고 저장하였다면 자동으로 /etc/nginx/sites-enabled/경로에 있는 default파일에 수정사항이 저장된다. 만일 실수로 해당 파일을 삭제하거나 수정사항이 저장이 되지 않았다면 다음의 명령어로 심볼릭 링크(바로가기)를 만들 수 있다.

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

default에 서버 설정이 완료되면 다음의 명령어를 터미널에 입력하여 서버를 재시작한다.

sudo systemctl restart nginx 

만약 nginx을 다시 설치하고 싶다면 아래의 명령어를 입력하여 삭제한 후 다시 설치한다

sudo apt-get remove --purge nginx nginx-full nginx-common 

3. https 적용하기

일반적으로 Nginx을 사용하여 서버를 실행할 경우 http서버가 생성된다. 일반적인 웹 서비스를 목적으로 서버를 생성하였다면 http가 아닌 https를 사용해야 웹 보안에 유리하다. https를 사용하기 위해서는 SSL인증서가 필요하다. 이 포스트에서는 certbot을 이용하여 무료 인증서를 발급받아서 사용할 것이다.

1. SSL인증서 발급받기

SSL 인증서 발급을 위해 다음의 명령어로 certbot을 설치한다.

sudo apt-get install certbot python3-certbot-nginx

사용하는 도메인으로 다음의 명령어를 터미널에 입력하여 SSL 인증서를 발급받는다.

sudo certbot certonly --nginx -d [도메인]

기본적으로 인증서가 생성되는 경로는 다음과 같은 경로에 생성된다.

/etc/letsencrypt/live/[도메인]/fullchain.pem
/etc/letsencrypt/live/[도메인]/privkey.pem

2. SSL인증서 적용하기

인증서 생성이 완료되면 vi에디터로 /etc/nginx/sites-available경로에 있는 default파일을 열어 아래와 같이 수정한다.

server {
        listen 443;
        listen [::]:443;
        server_name [도메인];
        ssl on;
        ssl_certificate /etc/letsencrypt/live/[도메인]/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/[도메인]/privkey.pem;
        root [프로젝트 경로];
        index index.html index.htm index.nginx.debian.html;
        location / {
                try_files $uri $uri/ /index.html;
        }
}
server {
        listen 80;
        listen [::]:80;
        server_name [도메인];
        return 301 https://$server_name$request_uri;
}

수정이 완료되면 아래의 명령어로 nginx를 재시작한다.

sudo systemctl restart nginx
profile
기억하기 싫어서 기록하는 작은 공간

0개의 댓글