// CHAPTER 04

Server
웹 서버 · 메일 서버 구축

Nginx 웹 서버 설치부터 방화벽 설정, DNS 연결 확인,
메일 서버 개념까지 서버 구축 실습 흐름을 정리합니다.


(실습 진행은 03.ecs.li 도메인을 이용하여 진행하였습니다.)

// KEY CONCEPTS

핵심 개념 한눈에 보기

서버 구축에서 반드시 이해해야 할 핵심 요소들입니다.

WEB SERVER

Nginx

고성능 웹 서버 소프트웨어. 정적 파일 제공, 리버스 프록시, 로드 밸런싱 등 다양한 역할을 수행합니다.

FIREWALL

UFW

Ubuntu의 방화벽 관리 도구(Uncomplicated Firewall). iptables를 쉽게 제어할 수 있는 인터페이스입니다.

FIREWALL

iptables

리눅스 커널 수준의 패킷 필터링 도구. 포트 단위로 세밀한 인바운드·아웃바운드 트래픽을 제어합니다.

WEB STACK

APM

Apache + PHP + MySQL 조합의 웹 서비스 스택. Linux 환경에서는 LAMP라고도 부릅니다.

MAIL

메일 서버

SMTP로 메일을 전송하고, IMAP/POP3로 수신함을 조회합니다. Postfix, Stalwart 등이 대표적입니다.

DNS

DNS 연결 확인

dig 명령어로 도메인의 A, MX, TXT 레코드를 조회해 서버와 도메인이 정상 연결됐는지 확인합니다.

// WEB ARCHITECTURE

웹 서비스 기본 구조 (APM)

사용자의 요청이 웹 서버를 거쳐 애플리케이션과 DB까지 처리되는 흐름입니다. Nginx는 Apache 대신 웹 서버 역할로 자주 사용됩니다.

사용자 브라우저
HTTP/HTTPS 요청
웹 서버
Nginx / Apache
정적 파일 처리
또는 PHP 연동
애플리케이션
PHP
동적 페이지 생성
DB 쿼리 실행
데이터베이스
MySQL
데이터 저장·조회

💡 운영 환경 필수 고려사항

방화벽 설정 · 로그 관리 · 정기 백업 · HTTPS 인증서(Let's Encrypt) · DB 계정 분리

// NGINX SETUP

Nginx 웹 서버 구축 흐름

OCI Ubuntu 인스턴스에서 Nginx를 설치하고 정적 웹사이트를 배포하는 전체 과정입니다.

01

Nginx 설치

sudo apt update
sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx  # 부팅 시 자동 시작
02

웹 루트 디렉토리 및 파일 생성

sudo mkdir -p /var/www/html/mysite
sudo nano /var/www/html/mysite/index.html
 
# 소유권 변경 (권한 문제 발생 시)
sudo chown -R ubuntu:ubuntu /var/www/html/mysite/
03

Nginx 설정 파일 수정

/etc/nginx/sites-available/default 파일을 열어 root 경로와 서버 이름을 수정합니다.

sudo nano /etc/nginx/sites-available/default
 
# 파일 내 수정 항목
root /var/www/html/mysite;
server_name 03.ecs.li;
 
# 설정 문법 확인 후 재시작
sudo nginx -t
sudo systemctl restart nginx
04

방화벽 설정 (UFW)

sudo apt install -y ufw
sudo ufw allow 22/tcp   # SSH (필수 — 먼저 열어야 함)
sudo ufw allow 80/tcp   # HTTP
sudo ufw allow 443/tcp  # HTTPS
sudo ufw enable
sudo ufw status verbose

⚠️ ufw enable 전에 반드시 SSH(22번) 포트를 먼저 열어야 합니다. 그렇지 않으면 서버 접속이 차단됩니다.

05

iptables 포트 허용

UFW 외에 iptables 레벨에서도 포트를 허용해야 할 때 사용합니다. OCI 인스턴스 환경에서 필요한 경우가 있습니다.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
 
# 재부팅 후에도 유지되도록 저장
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
06

접속 확인

# 루프백으로 Nginx 응답 확인
curl -I http://127.0.0.1      # 200 OK 확인
 
# 도메인으로 외부 접속 확인
curl -I http://03.ecs.li
 
# 80번 포트 수신 상태 확인
sudo ss -tulnp | grep :80  # LISTEN 0 이면 정상

// FIREWALL

UFW vs iptables

두 도구는 역할이 겹치지만, 사용 목적이 다릅니다.

UFW 서비스 수준 방화벽

"Uncomplicated Firewall"의 약자로, Ubuntu에서 iptables를 쉽게 다루기 위한 도구입니다. 서비스 포트 단위의 허용·차단을 간단한 명령어로 관리할 수 있습니다. sudo ufw status numbered로 현재 규칙을 번호와 함께 확인할 수 있습니다.

iptables 커널 수준 패킷 필터

리눅스 커널이 직접 제공하는 네트워크 패킷 필터링 도구입니다. UFW보다 세밀한 제어가 가능하지만 문법이 복잡합니다. OCI 환경에서는 인스턴스의 보안 규칙(Security List)과 함께 iptables까지 설정해야 정상적으로 포트가 열리는 경우가 있습니다.

iptables 규칙은 재부팅 시 초기화되므로, iptables-persistent로 저장해 영구 적용합니다.

// DNS CHECK

DNS 연결 확인

도메인을 서버 IP에 연결한 후, dig 명령어로 DNS 레코드가 정상 전파됐는지 확인합니다.

# A 레코드: 도메인 → IP 변환 확인
dig A 03.ecs.li +short
 
# MX 레코드: 메일 서버 주소 확인
dig MX 03.ecs.li +short
 
# TXT 레코드: SPF, DMARC 등 확인
dig TXT 03.ecs.li +short
dig TXT _dmarc.03.ecs.li +short

💡 DNS 전파 확인 팁

도메인 레코드 변경 후 즉시 반영되지 않을 수 있습니다. TTL 설정에 따라 수 분에서 최대 48시간까지 전파에 시간이 걸립니다. dig 명령어 결과에 서버의 공인 IP가 표시되면 정상적으로 연결된 것입니다.

레코드 타입역할예시
A 도메인 → IPv4 주소 03.ecs.li → 193.122.118.54
MX 메일 서버 주소 지정 03.ecs.li → mail.03.ecs.li
TXT SPF / DMARC 등 텍스트 정보 스팸 방지 인증 정보
CNAME 도메인 별칭 (다른 도메인으로 연결) www → 03.ecs.li

// MAIL SERVER

메일 서버 개념

메일 서버는 이메일을 전송하고 수신함을 관리하는 서버입니다. 보내기(SMTP)와 읽기(IMAP/POP3) 역할이 분리됩니다.

📤 SMTP

메일 전송에 사용하는 프로토콜입니다.

클라이언트 → 서버, 서버 → 서버 간 메일 전달에 모두 사용합니다.

포트: 25 (서버 간) · 465 (SSL) · 587 (TLS)

📥 IMAP

서버에 메일을 보관하며 여러 기기에서 동기화하는 프로토콜입니다.

메일을 서버에 유지하므로 스마트폰·PC 모두에서 동일하게 조회됩니다.

포트: 143 · 993 (SSL/TLS)

📨 POP3

서버에서 메일을 다운로드하는 프로토콜입니다.

기본적으로 다운로드 후 서버에서 삭제되므로 단일 기기 사용에 적합합니다.

포트: 110 · 995 (SSL/TLS)

메일 서버 작동 흐름

MUA(메일 클라이언트) → MTA(SMTP 서버, 메일 전달) → MDA(수신자 메일함에 저장) → 수신자가 IMAP/POP3로 조회

운영 포인트: TLS 암호화 · 스팸 차단(SPF/DKIM/DMARC) · 로그인 인증

// MAIL SOFTWARE

Postfix · Stalwart 개요

실습에서 사용한 메일 서버 소프트웨어입니다.

Postfix MTA · SMTP 전용

리눅스에서 가장 널리 사용되는 MTA(Mail Transfer Agent)입니다. 메일을 전송하고 라우팅하는 역할만 담당하며, 수신함 조회(IMAP/POP3)는 별도 소프트웨어가 필요합니다.

sudo apt install -y postfix
sudo nano /etc/postfix/main.cf         # 설정 파일
sudo systemctl restart postfix
 
# SMTP 연결 테스트 (응답 메시지가 나와야 정상)
telnet 03.ecs.li 25

Stalwart All-in-one 메일 서버

SMTP · IMAP · 관리 웹 UI를 하나로 제공하는 현대적인 메일 서버입니다. 설치가 간단하고 웹 콘솔(:8080)에서 계정 관리와 설정이 가능합니다.

# Stalwart 설치
curl --proto '=https' --tlsv1.2 -sSf \
  https://get.stalw.art/install.sh -o install.sh
sh install.sh
 
# 설치 후 상태 확인
systemctl status stalwart --no-pager
 
# 초기 관리자 계정 확인
journalctl -u stalwart -n 200 --no-pager | grep -A8 'bootstrap mode'
포트프로토콜용도
22SSH서버 원격 접속 (필수)
25SMTP서버 간 메일 수신
80HTTP웹 서버
443HTTPS보안 웹 서버
465SMTPSSSL/TLS 메일 전송 (클라이언트)
993IMAPSSSL/TLS 메일 수신함 조회
8080HTTPStalwart 관리 웹 콘솔
← 메인 페이지로 돌아가기