한줄공지
  • 등록된 공지내용이 없습니다.

Ubuntu 24.04에 Nginx 웹 서버 설치하는 방법

2024년 7월 25일
조회수 77
코멘트 0

목차

Introduction

Nginx는 서버에서 정적 및 동적 웹 애플리케이션 또는 서비스를 제공할 수 있게 해주는 오픈 소스 웹 서버 애플리케이션입니다. Nginx는 웹 서버, 로드 밸런서, 리버스 프록시 또는 HTTP 캐시로 작동하여 기존 응용 프로그램과 통합하거나 서버 IP 주소 또는 도메인을 사용하여 웹 애플리케이션을 제공합니다.

이 기사에서는 Nginx 웹 서버를 Ubuntu 24.04에 설치하고 예제 웹 애플리케이션을 서버에서 실행하기 위한 설정 방법에 대해 설명합니다.

Prerequisites

시작하기 전에 다음을 수행해야 합니다:

Nginx 설치하기

최신 Nginx 패키지는 Ubuntu 24.04의 기본 APT 저장소에서 사용할 수 있습니다. 아래 단계를 따라 서버 패키지를 업데이트하고 Nginx 웹 서버 애플리케이션을 설치하세요.

  1. 서버 패키지 인덱스를 업데이트하세요.
$ sudo apt update
  1. Nginx를 설치하세요.
$ sudo apt install nginx -y
  1. 서버에 설치된 Nginx 버전을 확인하세요.
$ sudo nginx -version

위의 출력은 다음과 유사해야 합니다.

nginx version: nginx/1.24.0 (Ubuntu)

Nginx 시스템 서비스 관리하기

Nginx는 서버에서 웹 서버 실행 시간 및 프로세스를 제어하는 nginx 시스템 서비스 프로필을 사용합니다. 아래 단계를 따라 Nginx 시스템 서비스를 활성화하고 서버에서 웹 서버 프로세스를 관리하세요.

  1. Nginx 웹 서버가 부팅 시 자동으로 시작하도록 설정하세요.
$ sudo systemctl enable nginx

출력 결과는 다음과 같아야 합니다.

Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable nginx
  1. Nginx 서비스를 시작하세요.
$ sudo systemctl start nginx
  1. Nginx 서비스를 중지하세요.
$ sudo systemctl stop nginx
  1. Nginx 서비스를 재시작하세요.
$ sudo systemctl restart nginx
  1. Nginx 서비스 상태를 확인하고 실행 중인지 확인하세요.
$ sudo systemctl status nginx

출력 결과는 다음과 같아야 합니다.

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-06-26 10:55:50 UTC; 1min 0s ago
       Docs: man:nginx(8)
    Process: 2397 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 2399 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 2400 (nginx)
      Tasks: 2 (limit: 1068)
     Memory: 1.7M (peak: 2.4M)
        CPU: 13ms
     CGroup: /system.slice/nginx.service
             ├─2400 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─2401 "nginx: worker process"

위의 출력 값인 Active: active (running)에 따라 Nginx가 서버에서 실행 중입니다. 서비스 활성 상태에 Active: active (failed)가 포함되어 있다면 포트 80에서 실행 중인 프로세스를 중지하고 nginx 서비스를 다시 시작하세요.

새로운 Nginx 가상 호스트 생성하기

Nginx 가상 호스트에는 특정 디렉터리에서 특정 도메인을 사용하여 웹 애플리케이션 파일을 제공할 수 있도록 하는 특별한 구성이 포함되어 있습니다. 다음 단계에서는 서버에 웹 애플리케이션 파일을 안전하게 제공하기 위해 새로운 예제 Nginx 가상 호스트 구성을 생성합니다.

  1. /etc/nginx/sites-available 디렉터리에 새로운 Nginx 가상 호스트 구성을 생성하세요. 예를 들어 app.example.com.conf입니다.
$ sudo nano /etc/nginx/sites-available/app.example.com.conf
  1. 다음 구성을 파일에 추가하세요.
server {
    listen 80;
    listen [::]:80;

    server_name app.example.com;

    root /var/www/app.example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

파일을 저장하고 닫으세요.

위의 Nginx 가상 호스트 구성은 app.example.com 도메인을 사용하여 수신 연결을 수신하고 서버의 /var/www/app.example.com 웹 루트 디렉터리에서 웹 애플리케이션 파일을 제공합니다.

  1. 오류가 있는지 확인하기 위해 Nginx 구성을 테스트하세요.
$ sudo nginx -t

출력 결과는 다음과 같아야 합니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. 구성을 활성화하기 위해 구성을 /etc/nginx/sites-enabled 디렉터리에 연결하세요.
$ sudo ln -s /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
  1. 웹 애플리케이션 파일을 저장할 새로운 웹 루트 디렉터리 /var/www/app.example.com를 생성하세요.
$ sudo mkdir -p /var/www/app.example.com
  1. 디렉터리 내에 새로운 HTML 애플리케이션 파일인 index.html을 생성하세요.
$ sudo nano /var/www/app.example.com/index.html
  1. 파일에 다음 HTML 내용을 추가하세요.
<html>
    <head></head>
    <body>
        <h1>Greetings from Vultr</h1> 
    </body>
</html>

파일을 저장하고 닫으세요.

위의 HTML 애플리케이션은 웹 브라우저에서 접근할 때 Greetings from Vultr 제목을 표시합니다.

  1. 서버에 새로운 가상 호스트 구성을 적용하기 위해 Nginx를 재시작하세요.
$ sudo systemctl restart nginx
  1. 도메인에 액세스하여 Nginx가 서버에서 가상 호스트 웹 애플리케이션 파일을 올바르게 제공하는지 확인하세요. 예를 들어 해당 도메인으로 Curl 유틸리티를 사용하여 액세스할 수 있습니다.
$ curl http://app.example.com

출력 결과는 다음과 같아야 합니다.

Greetings from Vultr

Nginx 웹 서버 보안 설정하기

SSL 인증서를 사용하면 브라우저와 Nginx 웹 서버 간의 HTTPS를 통한 암호화된 통신을 가능하게 합니다. 기본적으로 Nginx는 보안되지 않은 HTTP 포트 80에서 수신 연결을 대기합니다. 아래 단계를 따라 신뢰할 수 있는 Let's Encrypt SSL 인증서를 생성하고 암호화된 HTTPS 연결 요청을 가능하게 하기 위해 Nginx 웹 서버를 보안하세요.

  1. Snap을 사용하여 Certbot Let's Encrypt 클라이언트 패키지를 설치하세요.
$ sudo snap install --classic certbot
  1. 서버에 설치된 Certbot 버전을 확인하세요.
$ sudo certbot --version

출력 결과는 다음과 같아야 합니다.

certbot 2.11.0
  1. 도메인에 대한 새로운 SSL 인증서를 생성하세요. Nginx 가상 호스트 구성에서 실제 도메인인 app.example.com을 사용하여 대체하세요.
$ sudo certbot --nginx -d app.example.com --agree-tos

방화벽 규칙 설정하기

Ubuntu 24.04에는 Uncomplicated Firewall (UFW)가 기본적으로 사용되고 활성화되어 있습니다. 아래 단계를 따라 서버에서 HTTP 및 HTTPS 연결을 수신하기 위해 방화벽을 새로운 연결 규칙으로 구성하세요.

  1. HTTP 포트 80에서 네트워크 연결을 허용하세요.
$ sudo ufw allow 80/tcp
  1. HTTPS 포트 443에서 연결을 허용하세요.
$ sudo ufw allow 443/tcp
  1. UFW 테이블을 확인하고 새로운 연결 규칙이 활성화되었는지 확인하세요.
$ sudo ufw status

출력 결과는 다음과 같아야 합니다.

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)

결론

Ubuntu 24.04 서버에 Nginx를 설치하고 웹 서버를 구성하여 웹 애플리케이션을 제공할 수 있게 되었습니다. Nginx는 웹 서버가 여러 개의 가상 호스트 구성을 지원하므로 서버에서 안전하게 웹 애플리케이션을 제공할 수 있습니다. 또한 Nginx 웹 서버를 MySQL 및 PHP와 같은 다른 애플리케이션과 통합하여 서버에서 동적 웹 애플리케이션을 제공할 수도 있습니다. 자세한 정보 및 구성 옵션은 공식 Nginx 문서를 참조하십시오.

 

출처: https://docs.vultr.com/how-to-install-nginx-web-server-on-ubuntu-24-04

안정적이고 저렴한 가상 서버(VPS) 안내

안정적인 서버 호스팅을 찾고 계신가요? 지금 Vultr 호스팅을 한번 이용 해 보세요. 지금 보고 계신 HaruLogs 사이트도 Vultr에서 VPS 호스팅 하고 있습니다. 한국, 일본, 미국등 다양한 국가에 클릭 몇번으로 안정적이고 저렴한 VPS를 운영 할 수 있습니다.

아래 배너를 통해 회원 가입을 하시면 100달러의 무료 크레딧을 받을 수 있습니다. 100달러의 무료 크레딧은 Vultr의 최소 사양 VPS를 20대 동시 운영가능한 크레딧입니다.

지금 무료로 Vultr $100 크레딧 선물 받기

 

Vultr 서비스 요약

  • VPS
    • 인스턴스
      • AMD 또는 Intel High Performance 인스턴스 최저 $6 - 1vCPU, 1GB Memory, 2TB Bandwidth, 25GB NVMe
    • 엣지
  • Block Storage
  • Object Storage (AWS S3 호환)
  • Firewall
  • Network
  • Load Balancers
  • Kubernetes
  • Databases
포스트 통계
지금 보고있는 포스트의 통계 데이터를 확인 해 보세요.
  • 총 조회수
    77
  • 최근 30일 조회수
    42
연관 포스트
코멘트 작성