Ubuntu 22.04 Server / NGINX / 설치와 설정
Nginx는 높은 성능과 안정성을 제공하는 웹 서버 소프트웨어로, 웹 서버 외에도 리버스 프록시, 로드 밸런서, 메일 프록시 등의 기능을 수행할 수 있다. Igor Sysoev가 2004년에 처음 개발했으며, 현재는 오픈 소스 소프트웨어로 널리 사용되고 있다.
차례
가정
- Ubuntu 22.04 Server의 IP는 192.168.3.242이고, 내 컴퓨터에서 IP로 접근 가능하다.
- 내 컴퓨터의 OS는 Windows이다.
설치
nginx 패키지 설치
다음과 같이 명령하여 NGINX를 설치한다.
# apt install nginx
방화벽 설정
HTTP 통신을 위해서는 80 포트, HTPS 통신을 위해서는 443 포트가 열려 있어야 한다. 방화벽이 비활성화되어 있는지, 활성화되어 있다면 해당 포트가 열려있는지 확인한다.
Nginx를 설치하면 방화벽 앱이 만들어진다.
# ufw app list
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
- Nginx Full : 80/tcp, 443/tcp
- Nginx HTTP : 80/tcp
- Nginx HTTPS : 443/tcp
다음과 같이 명령하여 방화벽을 열 수 있다.
ufw allow 'Nginx Full'
작동 확인
웹브라우저로 http://192.168.3.242에 접속하여 아래와 같은 페이지가 나오는지 확인한다.
서비스 관리
NGINX 서비스 이름은 nginx이고, systemctl 명령어로 관리한다. NGINX를 설치하면 바로 서비스가 시작되고, 컴퓨터를 부팅할 때 자동으로 서비스가 시작하도록 설정된다.
서비스 상태 확인
# systemctl status nginx
서비스 중지
# systemctl stop nginx
서비스 시작
# systemctl start nginx
서비스 다시 시작
# systemctl restart nginx
서비스 다시 로드
# systemctl reload nginx
컴퓨터 부팅 시 서비스를 자동으로 시작하지 않도록 설정
# systemctl disable nginx
컴퓨터 부팅 시 서비스를 자동으로 시작하도록 설정
# systemctl enable nginx
가상 호스트
기본 가상 호스트
/etc/nginx/sites-available/default가 기본 가상 호스트 설정 파일이다. 주석을 제외한 내용은 다음과 같다.
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } }
- root /var/www/html
웹사이트의 루트 디렉토리는 /var/www/html이다. - index index.html index.htm index.nginx-debian.html
파일을 지정하지 않고 디렉토리로 접속했을 때 index.html, index.htm, index.nginx-debian.html을 순서대로 찾아서 보여준다. - try_files $uri $uri/ =404
웹브라우저에서 지정한 파일이 존재하지 않는 경우 404 에러를 출력한다.
/var/www/html에 index.nginx-debian.html 파일이 있는데, 이를 다음과 같이 변경하면...
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>NGINX</title> </head> <body> <h1>Hello</h1> </body> </html>
IP로 접속했을 때 출력되는 내용이 달라진다.
파일을 지정했는데 존재하지 않으면 다음과 같이 404 Not Found를 출력한다.
가상 호스트 만들기
가상 호스트는 다음과 같은 순서로 만든다.
- /etc/nginx/sites-available에 설정 파일 생성
- /etc/nginx/sites-enabled에 1에서 만든 파일의 링크 생성
- NGINX 서비스 다시 로드
내 컴퓨터 hosts 파일 수정
가상 호스트 작동 확인을 위해 C:\Windows\System32\drivers\etc\hosts 파일에 아래 내용을 추가하고 저장한다.
192.168.3.242 a.com
hosts 파일은 메모장 같은 텍스트 편집기로 수정하면 되는데, 관리자 권한으로 프로그램을 실행해야 저장된다.
사이트 루트 디렉토리와 HTML 파일 만들기
/var/www/에 a.com 디렉토리를 만들고, 그 안에 아래의 내용으로 index.html 파일을 만든다.
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>NGINX</title> </head> <body> <h1>A.COM</h1> </body> </html>
설정 파일 생성
/etc/nginx/sites-available에 아래 내용으로 a.com라는 파일을 만든다.
a.com로 요청이 들어오면 /var/www/a.com 디렉토리의 내용을 출력하라는 뜻이다.
server { listen 80; listen [::]:80; server_name a.com; root /var/www/a.com; index index.html; location / { try_files $uri $uri/ =404; } }
다음과 같이 명령하면 설정 파일에 오류가 있는지 확인할 수 있다.
# nginx -t
링크 만들기
/etc/nginx/sites-enabled/에 설정 파일의 링크를 만든다.
ln -s /etc/nginx/sites-available/a.com /etc/nginx/sites-enabled/
서비스 다시 로드
NGINX 서비스를 다시 로드한다.
# systemctl reload nginx
접속 확인
/var/www/a.com에 아래의 내용으로 index.html 파일을 만든다.
http://a.com으로 접속하여 아래와 같은 페이지가 나오는지 확인한다.
가상 호스트 삭제
/etc/nginx/sites-enabled/에 있는 설정 파일 링크를 삭제한다.
NGINX 서비스를 다시 로드한다.
# systemctl reload nginx