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 Server / 22.04 / 네트워크 세팅에 이더넷(Wired) 보이지 않을 때 해결 방법

Ubuntu Server / 22.04 / 네트워크 세팅에 이더넷(Wired) 보이지 않을 때 해결 방법

우분투 설정의 네트워크에 Wired가 보이지 않는다. 그것이 보여야 GUI로 IP 설정이 가능한데 말이다. 이를 보이게 하는 방법이 여러 가지가 있는 거 같은데, 내가 성공한 방법은... /etc/netplan/00-installer-config.yaml의 내용은 다음처럼 생겼을 것이다. # This is the network config written by 'subiquity' network: ethernets: eth0: dhcp4: true ...

Ubuntu 20.04 / 글꼴 설치하는 방법

Ubuntu 20.04 / 글꼴 설치하는 방법

Ubuntu 20.04 Desktop 설치하려는 글꼴을 더블 클릭하거나, 글꼴 선택 후 엔터키를 누르거나, 마우스 우클릭 후 를 클릭합니다. 상단에 있는 를 클릭합니다. 설치가 완료되면 으로 바뀝니다. 글꼴이 잘 설치되었는지 확인합니다.

Ubuntu 16.04 Server / logrotate 설치하고 설정하기

우분투(Ubuntu)는 여러 작업의 내용을 로그(Log) 파일로 남깁니다. 예를 들어 웹서버 운영과 관련된 로그는 /var/log/apache2에 있습니다. 로그는 기본적으로 하나의 파일에 계속 추가하는 것이어서, 시간이 지날수록 파일의 크기가 커집니다. 로그 파일의 크기가 너무 커지면, 시스템이 느려지거나 다운되기도 합니다. 이러한 문제를 해결해주는 패키지가 logrotate입니다. 로그 파일이 일정 기준을 충족하면 기존 로그 파일을 다른 이름으로 변경하여 저장하고 ...

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 16.04 / Apache / javascript 폴더 접근이 안되는 문제 해결하는 방법

javascript 폴더 접근 불가 우분투(Ubuntu)에서 아파치(Apache)로 웹서버를 운영할 때 이상한 문제가 하나 발생합니다. 사이트 경로에 javascript가 있으면 forbidden 에러가 나는 것입니다. Forbidden You don't have permission to access /javascript/ on this server. 이 문제가 발생하는 이유는 자바스크립트 설정 때문입니다. /etc/apache2/conf-available/javascript-common.conf에 다음과 같은 코드가 있습니다. Alias /javascript /usr/share/javascript/ javascript로 접속하면 /usr/share/javascript/로 연결시키라는 뜻입니다. 사이트 접속자는 /usr/share/javascript/에 접속 권한이 없으므로 forbidden 에러가 ...

Ubuntu 16.04 / SASS 설치하는 방법

우분투 16.04에 SASS를 설치하는 방법은 두 가지가 있습니다. 방법 1 apt install ruby-sass 방법 2 apt install ruby gem install sass 설치되었는지 확인하는 방법 sass -v SASS 버전이 출력되면 제대로 설치된 것입니다. Sass 3.4.23 (Selective Steve) 참고 최신 버전의 SASS를 사용하고 싶다면 방법 2로 설치합니다.

Ubuntu 18.04 Server / Nginx, PHP, MariaDB 설치하고 설정하기

Ubuntu 18.04 Server / Nginx, PHP, MariaDB 설치하고 설정하기

Nginx 설치 Nginx를 설치합니다. # apt install nginx 만약 방화벽을 사용하고 있다면 포트를 열어줍니다. # ufw allow 'Nginx Full' 서버 주소로 접속했을 때 다음과 같이 나오면 제대로 된 것입니다. 시작, 정지 등 Nginx를 시작합니다. # systemctl start nginx Nginx를 멈춥니다. # systemctl stop nginx Nginx를 재시작합니다. # systemctl restart nginx Nginx를 다시 로드합니다. # systemctl reload nginx Nginx를 설치하면 부팅 시 자동으로 시작하게 설정됩니다. 만약 자동 ...

Ubuntu Server 22.04 / vsftpd로 FTP 서버 구축하기

vsftpd vsftpd(Very Secure FTP Daemon)는 유닉스와 리눅스에서 사용할 수 있는 가벼운 FTP 서버입니다. 주요 특징은 다음과 같습니다. Virtual IP configurations Virtual users Standalone or inetd operation Powerful per-user configurability Bandwidth throttling Per-source-IP configurability Per-source-IP limits IPv6 Encryption support through SSL integration 설치 vsftpd는 우분투 패키지에 포함되어 있으므로 다음과 같이 명령하여 설치할 수 있습니다. # apt install vsftpd 방화벽을 사용 중이라면 다음과 같이 명령하여 포트를 ...

Ubuntu 22.04 Server / ZIP 압축 파일 푸는 방법

ZIP 파일을 압축 해제하기 위해서는 unzip 패키지가 필요하다. # apt install unzip xxx.zip 파일을 압축 해제하려면 다음과 같이 명령한다. # unzip xxx.zip 다음과 같이 명령하여 도움말을 볼 수 있다. # unzip -h 결과는 다음과 같다. UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP. Usage: unzip Default ...

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

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