Ubuntu 24.04에 Nginx 웹 서버 설치하는 방법
목차
- Introduction
- Prerequisites
- Nginx 설치하기
- Nginx 시스템 서비스 관리하기
- 새로운 Nginx 가상 호스트 생성하기
- Nginx 웹 서버 보안 설정하기
- 방화벽 규칙 설정하기
- 결론
Introduction
Nginx는 서버에서 정적 및 동적 웹 애플리케이션 또는 서비스를 제공할 수 있게 해주는 오픈 소스 웹 서버 애플리케이션입니다. Nginx는 웹 서버, 로드 밸런서, 리버스 프록시 또는 HTTP 캐시로 작동하여 기존 응용 프로그램과 통합하거나 서버 IP 주소 또는 도메인을 사용하여 웹 애플리케이션을 제공합니다.
이 기사에서는 Nginx 웹 서버를 Ubuntu 24.04에 설치하고 예제 웹 애플리케이션을 서버에서 실행하기 위한 설정 방법에 대해 설명합니다.
Prerequisites
시작하기 전에 다음을 수행해야 합니다:
- Vultr에서 Ubuntu 24.04 인스턴스를 배포하세요.
- 서버 IP 주소를 가리키는 도메인 또는 서브도메인의 A 레코드를 생성하세요. 예를 들어
app.example.com
입니다. - SSH를 사용하여 서버에 액세스하고 sudo 권한이 있는 non-root 사용자를 생성하세요.
- 서버를 업데이트하세요.
Nginx 설치하기
최신 Nginx 패키지는 Ubuntu 24.04의 기본 APT 저장소에서 사용할 수 있습니다. 아래 단계를 따라 서버 패키지를 업데이트하고 Nginx 웹 서버 애플리케이션을 설치하세요.
- 서버 패키지 인덱스를 업데이트하세요.
$ sudo apt update
- Nginx를 설치하세요.
$ sudo apt install nginx -y
- 서버에 설치된 Nginx 버전을 확인하세요.
$ sudo nginx -version
위의 출력은 다음과 유사해야 합니다.
nginx version: nginx/1.24.0 (Ubuntu)
Nginx 시스템 서비스 관리하기
Nginx는 서버에서 웹 서버 실행 시간 및 프로세스를 제어하는 nginx
시스템 서비스 프로필을 사용합니다. 아래 단계를 따라 Nginx 시스템 서비스를 활성화하고 서버에서 웹 서버 프로세스를 관리하세요.
- 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
- Nginx 서비스를 시작하세요.
$ sudo systemctl start nginx
- Nginx 서비스를 중지하세요.
$ sudo systemctl stop nginx
- Nginx 서비스를 재시작하세요.
$ sudo systemctl restart nginx
- 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 가상 호스트 구성을 생성합니다.
/etc/nginx/sites-available
디렉터리에 새로운 Nginx 가상 호스트 구성을 생성하세요. 예를 들어app.example.com.conf
입니다.
$ sudo nano /etc/nginx/sites-available/app.example.com.conf
- 다음 구성을 파일에 추가하세요.
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
웹 루트 디렉터리에서 웹 애플리케이션 파일을 제공합니다.
- 오류가 있는지 확인하기 위해 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
- 구성을 활성화하기 위해 구성을
/etc/nginx/sites-enabled
디렉터리에 연결하세요.
$ sudo ln -s /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
- 웹 애플리케이션 파일을 저장할 새로운 웹 루트 디렉터리
/var/www/app.example.com
를 생성하세요.
$ sudo mkdir -p /var/www/app.example.com
- 디렉터리 내에 새로운 HTML 애플리케이션 파일인
index.html
을 생성하세요.
$ sudo nano /var/www/app.example.com/index.html
- 파일에 다음 HTML 내용을 추가하세요.
<html>
<head></head>
<body>
<h1>Greetings from Vultr</h1>
</body>
</html>
파일을 저장하고 닫으세요.
위의 HTML 애플리케이션은 웹 브라우저에서 접근할 때 Greetings from Vultr
제목을 표시합니다.
- 서버에 새로운 가상 호스트 구성을 적용하기 위해 Nginx를 재시작하세요.
$ sudo systemctl restart nginx
- 도메인에 액세스하여 Nginx가 서버에서 가상 호스트 웹 애플리케이션 파일을 올바르게 제공하는지 확인하세요. 예를 들어 해당 도메인으로 Curl 유틸리티를 사용하여 액세스할 수 있습니다.
$ curl http://app.example.com
출력 결과는 다음과 같아야 합니다.
Greetings from Vultr
Nginx 웹 서버 보안 설정하기
SSL 인증서를 사용하면 브라우저와 Nginx 웹 서버 간의 HTTPS를 통한 암호화된 통신을 가능하게 합니다. 기본적으로 Nginx는 보안되지 않은 HTTP 포트 80
에서 수신 연결을 대기합니다. 아래 단계를 따라 신뢰할 수 있는 Let's Encrypt SSL 인증서를 생성하고 암호화된 HTTPS 연결 요청을 가능하게 하기 위해 Nginx 웹 서버를 보안하세요.
- Snap을 사용하여 Certbot Let's Encrypt 클라이언트 패키지를 설치하세요.
$ sudo snap install --classic certbot
- 서버에 설치된 Certbot 버전을 확인하세요.
$ sudo certbot --version
출력 결과는 다음과 같아야 합니다.
certbot 2.11.0
- 도메인에 대한 새로운 SSL 인증서를 생성하세요. Nginx 가상 호스트 구성에서 실제 도메인인
app.example.com
을 사용하여 대체하세요.
$ sudo certbot --nginx -d app.example.com --agree-tos
방화벽 규칙 설정하기
Ubuntu 24.04에는 Uncomplicated Firewall (UFW)가 기본적으로 사용되고 활성화되어 있습니다. 아래 단계를 따라 서버에서 HTTP 및 HTTPS 연결을 수신하기 위해 방화벽을 새로운 연결 규칙으로 구성하세요.
- HTTP 포트
80
에서 네트워크 연결을 허용하세요.
$ sudo ufw allow 80/tcp
- HTTPS 포트
443
에서 연결을 허용하세요.
$ sudo ufw allow 443/tcp
- 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 서비스 요약
- 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