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 18.04 Server / PHP 최신 버전으로 업그레이드하는 방법

Ubuntu 패키지로 설치한 PHP 버전보다 PHP 최신 버전이 더 높을 수 있습니다. 예를 들어 패키지로 설치한 PHP의 버전은 7.0, 최신 버전은 7.2일 수 있다는 것이죠. 만약 최신 버전의 PHP를 사용해야 한다면 다음의 방법으로 설치할 수 있습니다. PHP를 처음 설치하는 경우 저장소를 추가합니다. # add-apt-repository ppa:ondrej/php 패키지 정보를 업데이트합니다. # apt-get update PHP를 설치합니다. # apt-get install php PHP가 ...

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.24 Server / Apache, PHP, MariaDB 설치하는 방법

Ubuntu 20.24 Server / Apache, PHP, MariaDB 설치하는 방법

Ubuntu Server에 웹서버 Apache, 웹프로그래밍 언어 PHP, 데이터베이스 MariaDB를 설치하는 방법입니다. 웹서버 운영을 위한 최소한의 설치로, 실제로 서비스할 때는 더 많은 패키지가 필요할 수 있습니다. 설치 Apache, PHP, MariaDB를 설치합니다. php-mysql은 PHP와 MariaDB 연동을 위한 패키지입니다. # apt install apache2 mariadb-server php php-mysql MariaDB 설정 다음과 같이 명령하여 몇 가지 설정을 합니다. # mysql_secure_installation MariaDB의 root 계정 ...

Ubuntu 20.04 Server / GUI 설치하는 방법

Ubuntu 20.04 Server / GUI 설치하는 방법

Ubuntu Server는 CLI(Command Line Interface) 환경으로 설치된다. 그런데 어떤 작업은 GUI(Graphical Uer Interface) 환경에서 하는 것이 편하다. 만약 GUI 환경이 필요하다면 설치하여 사용할 수 있다. GUI 패키지에는 kubuntu-desktop lubuntu-desktop ubuntu-desktop ubuntu-desktop-minimal xubuntu-desktop 등이 있다. 주로 ubuntu-desktop 또는 ubuntu-desktop-minimal을 사용하는 듯 하다. 예를 들어 ubuntu-desktop-minimal을 설치한다면, 다음과 같이 명령하면 된다. # apt install ubuntu-desktop-minimal Minimal임에도 불구하고 꽤 많은 저장소 공간이 필요하다. After ...

Ubuntu 18.04 Server / 설치하기

Ubuntu 18.04 Server / 설치하기

다운로드 Ubuntu Server 다운로드 페이지는 다음과 같다. https://ubuntu.com/download/server 최신 버전에 대한 안내가 주로 있으므로, 구버전을 다운로드하고 싶다면 아래 링크가 편하다. https://mirror.kakao.com/ubuntu-releases/ 가상 머신에 설치한다면 다운로드한 ISO 파일을 그대로 사용하면 되고, 물리 서버에 설치한다면 Rufus 같은 툴을 이용하여 부팅 USB를 만든다. 설치 설치 미디어로 부탕하고 잠시 기다리면 언어를 선택하는 화면이 나온다. 원하는 언어를 선택하고 엔터키를 누른다. 키보드 레이아웃을 정하고 ...

Ubuntu 16.04 Server / PHP / 메모리 늘리는 방법

PHP 설정은 php.ini에서 한다. Ubuntu 16.04에서 php.ini의 위치는 /etc/php/7.0/apache2/php.ini 이다. PHP 버전에 따라 7.0은 다른 숫자일 수 있다. 메모리를 늘리기 위해 수정해야 할 것은 memory_limit이다. 기본값은 128M이다. 128을 적절히 변경한다. memory_limit = 128M 변경한 설정이 적용되도록 하려면 웹서버를 다시 시작하거나 다시 로드한다. Apache 웹서버라면 다음과 같이 명령하여 다시 시작할 수 있고, # service apache2 restart 다음과 같이 ...

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

네트워크 설정 파일은 /etc/netplan 디렉토리 안에 있는 yaml 파일이다. DHCP로 설치했다면, 설정 파일 내용은 다음과 비슷하게 되어 있다. # This is the network config written by 'subiquity' network: ethernets: enp0s3: dhcp4: true version: 2 다음과 같이 수정하고 저장한다. IP 등은 네트워크 환경에 맞게 적절히 ...

Ubuntu / 특정 패키지만 업그레이드 하기, 보안 업데이트만 업그레이드 하기

우분투 서버에 접속하면 업데이트가 필요한 패키지가 있는지 알려줍니다. 두 가지 분류로 알려주는데, 하나는 패키지 업데이트, 또 하나는 보안 업데이트입니다. 소프트웨어는 보통 최신 버전을 유지하는 것이 좋지만, 업그레이드했을 때 문제가 없는지 충분히 확인을 해야 합니다. 따라서 특정 패키지만 업그레이드를 하거나, 보안 업데이트만 해야 하는 경우가 발생하는데, 어떻게 그런 작업을 하는지 알아보겠습니다. 특정 ...

Ubuntu Server / 메모

MariaDB / 포트 변경 MariaDB의 기본 접속 포트는 3306입니다. 이를 다른 포트로 변경하고 싶다면 /etc/mysql/mariadb.conf.d/50-server.cnf를 수정합니다. port = 3306 을 찾아서 원하는 포트로 변경한 후 저장합니다. 그리고 MariaDB를 재시작합니다. service mysql restart MariaDB / Can't connect to MySQL server on ... (10061) 다음과 같은 에러를 만났다면... Can't connect to MySQL server on ... (10061) /etc/mysql/mariadb.conf.d/50-server.cnf에 있는 bind-address = 127.0.0.1 를 ...

Ubuntu 22.04 Server / 원격 데스크톱으로 연결하는 방법

Ubuntu 22.04 Server / 원격 데스크톱으로 연결하는 방법

GUI 설치 우분투에 GUI를 설치한다. # apt install ubuntu-desktop-minimal xrdp 설치 xrdp를 설치한다. # apt install xrdp 방화벽 설정 원격 데스크톱은 3389 포트를 사용하므로, 방화벽을 사용하고 있다면 포트를 열어 준다. ufw allow 3389/tcp 원격 데스크톱 연결 원격 데스크톱으로 접속한다. 아래와 같은 창이 뜨는데, 를 클릭한다. 계정 정보를 입력하고 를 클릭하면... 원격지에서 GUI로 우분투를 즐길 수 있다.