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를 출력한다.

가상 호스트 만들기

가상 호스트는 다음과 같은 순서로 만든다.

  1. /etc/nginx/sites-available에 설정 파일 생성
  2. /etc/nginx/sites-enabled에 1에서 만든 파일의 링크 생성
  3. 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

 

같은 카테고리의 다른 글

Ubuntu 16.04 / 메모

PHP intl 설치 apt install php-intl service apache2 reoad APCu 설치 apt install php-apcu service apache2 reload

Ubuntu 18.04 / 해상도 변경하는 방법

Ubuntu 18.04 / 해상도 변경하는 방법

Ubuntu 18.04 Desktop에서 해상도 변경하는 방법입니다. 바탕화면에서 마우스 우클릭을 합니다. 를 클릭합니다. 왼쪽 메뉴에서 를 클릭합니다. 왼쪽 메뉴에서 를 클릭하고, 오른쪽에서 해상도를 선택합니다. 오른쪽 위의 버튼을 클릭합니다. 를 클릭합니다.

Ubuntu 22.04 Server / 백신 프로그램 ClamAV 설치 및 사용법

ClamAV ClamAV는 리눅스에서 사용할 수 있는 백신 프로그램이다. 우분투 패키지에 포함되어 있으므로 apt 명령으로 쉽게 설치하고 사용할 수 있다. 설치 # apt install clamav 사용법 데이터베이스 업데이트 clamav-freshclam 서비스를 중지한다. # systemctl stop clamav-freshclam freshclam 명령으로 업데이트한다. # freshclam clamav-freshclam 서비스를 시작한다. # systemctl start clamav-freshclam 검사 home 디렉토리와 그 하위 디렉토리를 검사한다. # clamscan -r /home 검사 결과는 다음처럼 나온다. ----------- SCAN SUMMARY ----------- Known viruses: ...

Ubuntu Server / do-release-upgrade / 버전 업그레이드 명령어

Ubuntu 새 버전이 나오면 어떻게 업그레이드를 할까? 새로 설치하고 다시 설정하는 게 제일 좋지만, 설정할 게 많다면 바로 업그레이드를 할 수도 있다. 업그레이드는 do-release-upgrade 명령어로 한다. do-release-upgrade -h Usage: do-release-upgrade Options: -h, --help show this help message and exit -V, ...

Ubuntu 16.04 / phpMyAdmin / 특정 IP에서만 접속 가능하게 만드는 방법

우분투 16.04에서 phpMyAdmin을 패키지로 설치했을 때, 기본 설정은 모든 IP에서 접속 가능입니다. 만약 특정 IP에서만 접속 가능하게 하려면 /etc/apache2/conf-available/phpmyadmin.conf에 다음 코드를 추가합니다. <Directory /usr/share/phpmyadmin> Order deny,allow Deny from all Allow from xxx.xxx.xxx.xxx </Directory> xxx.xxx.xxx.xxx는 접속하려는 IP로 바꿉니다. 여러 IP를 설정하고 싶을 때는 띄어쓰기로 구분합니다. <Directory /usr/share/phpmyadmin> Order deny,allow Deny from all ...

Ubuntu 24.04 Server / SSH / 포트 변경하는 방법

보안 등의 이유로 SSH 포트를 변경해야 한다면, 다음과 같이 한다. /etc/ssh/sshd_config에서 다음의 코드를... #Port 22 다음으로 변경한다. Port 1980 방화벽이 활성화되어 있다면 1980 포트를 열어준다. ufw allow 1980/tcp SSH 서비스를 다시 시작한다. systemctl restart ssh SSH 서비스를 다시 시작해도 적용되지 않으면, 컴퓨터를 다시 시작한다.

Ubuntu 20.04 Desktop / 설치하기

Ubuntu 20.04 Desktop / 설치하기

다음은 Ubuntu 20.04 Desktop을 설치하는 과정입니다. Windows를 설치하는 것만큼 쉽고, 시간도 오래 걸리지 않습니다. Ubuntu Desktop을 다운로드하고 설치용 CD 또는 USB를 만듭니다. Rufus를 사용하면 편합니다. 컴퓨터에 설치용 미디어를 장착하고 부팅합니다. 잠시 기다리면... GUI로 설치를 시작합니다. 언어를 한국어로 정하고 를 클릭합니다. 키보드 레이아웃을 정하고 를 클릭합니다. 일반 설치와 최소 설치 중 하나를 선택합니다. 최소 설치를 하고 나중에 ...

Ubuntu 18.04 Server / 언어 변경하는 방법

현재 언어 확인하기 locale 명령어로 현재 언어가 무엇인지 확인할 수 있습니다. # locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= 언어 변경하기 사용할 언어를 먼저 설치합니다. 한국어를 사용하고 싶다면 다음과 같이 명령합니다. # apt-get install language-pack-ko /etc/default/locale을 열고 다음과 같이 만듭니다. LANG=ko_KR.UTF-8 테스트하기 새로 로그인하거나 재부팅하면 변경한 언어가 적용됩니다. 의미 없는 문자열을 입력해보거나... # 123 123: 명령을 찾을 수 없습니다 locale 명령어로 확인할 수 있습니다. # locale LANG=ko_KR.UTF-8 LANGUAGE= LC_CTYPE="ko_KR.UTF-8" LC_NUMERIC="ko_KR.UTF-8" LC_TIME="ko_KR.UTF-8" LC_COLLATE="ko_KR.UTF-8" LC_MONETARY="ko_KR.UTF-8" LC_MESSAGES="ko_KR.UTF-8" LC_PAPER="ko_KR.UTF-8" LC_NAME="ko_KR.UTF-8" LC_ADDRESS="ko_KR.UTF-8" LC_TELEPHONE="ko_KR.UTF-8" LC_MEASUREMENT="ko_KR.UTF-8" LC_IDENTIFICATION="ko_KR.UTF-8" LC_ALL=

Ubuntu 24.04 Server / root 계정으로 로그인할 수 있게, ssh 접속할 수 있게 설정하는 방법

Ubuntu는 설치할 때 일반 사용자 계정만 만들고, 관리자 권한이 필요할 때는 sudo를 이용한다. 만약 보안에 문제가 없는 경우라면 root 계정으로 로그인하는 게 작업하는 게 편하다. root 계정으로 로그인할 수 있게 설정하는 방법 일반 사용자 계정으로 로그인한다. 다음과 같이 명령하여 root 계정의 비밀번호를 만들면 root 계정으로 로그인할 수 있다. # sudo passwd root root 계정으로 ssh ...

Ubuntu 24.04 Server / 고정 IP 설정하는 방법

네트워크 설정 파일은 /etc/netplan 디렉토리 안에 있는 yaml 파일이다. # ll /etc/netplan total 12 drwxr-xr-x 2 root root 4096 Apr 27 23:00 ./ drwxr-xr-x 108 root root 4096 Apr 27 23:06 ../ -rw------- 1 root root 389 Apr 27 23:00 50-cloud-init.yaml DHCP라면 설정 파일이 다음과 비슷하게 되어 있다. # This file is ...