Nginx 설치 가이드 — Ubuntu / CentOS (특정 버전·설정 구조·방화벽)

1. Nginx란?

Nginx는 가볍고 높은 성능을 자랑하는 오픈소스 웹 서버로, 현재 전 세계에서 가장 널리 사용되고 있다. 단순한 웹 서버 역할을 넘어 리버스 프록시(Reverse Proxy)·로드 밸런서·메일 프록시 등 아키텍처 상의 복잡한 문제를 해결하는 핵심 역할을 한다.

이 글에서는 클라우드 서버(AWS EC2 등)에서 가장 많이 쓰이는 Ubuntu(Debian 계열)와 기업용으로 선호되는 CentOS/RedHat(RPM 계열)의 설치 방법을 정리한다.

💡 참고 — 이 가이드는 서버가 인터넷(Public 망)에 연결된 환경(패키지 관리자 사용)을 전제로 한다. 폐쇄망(Private Subnet)에서는 별도 바이너리 파일을 통한 수동 설치가 필요하다.

2. Ubuntu 환경에서 Nginx 설치 (Debian 계열)

패키지 관리자는 apt.

sudo apt update
sudo apt install nginx

실무에선 특정 버전을 설치해야 하는 경우가 생긴다.

apt-cache madison nginx                    # 저장소에서 설치 가능한 nginx 버전 조회
sudo apt install nginx=1.24.0-2ubuntu7.5   # 특정 버전 설치

서비스 관리:

sudo systemctl start nginx
sudo systemctl enable nginx   # 부팅 시 자동 실행

2.1 절차 세부 설명

apt 저장소 update 터미널 화면 그림 1. sudo apt update — apt 저장소 업데이트

apt 로 nginx 설치하는 터미널 화면 그림 2. sudo apt install nginx — nginx 설치

먼저 apt 저장소를 update하고(특히 최신 버전 반영을 위해 update 권장) nginx를 설치한다. 그림 1은 apt update 결과, 그림 2는 apt 저장소로 nginx를 설치한 결과다. 중간에 (Y/n)이 나오면 Y를 입력해 계속한다.

우분투에서 nginx 설치 완료 화면 그림 3. apt로 nginx 설치 완료

apt로 nginx를 설치하면 linux service에 자동 등록되므로, systemctl(리눅스 서비스(데몬) 총괄 관리자)로 상태 확인·시작·중지가 가능하다.

systemctl status 로 nginx 구동 상태 확인 그림 4. systemctl status nginx — 구동 상태 확인

sudo systemctl status nginx로 상태를 확인할 수 있다. apt로 설치하면 default config로 실행된다.

2.2 Nginx 설정(Configuration) 파일 구조와 경로

etc nginx 설정 파일 경로와 디렉토리 구조 그림 5. nginx 설정 파일 경로(/etc/nginx/)

패키지 관리자로 설치하면 모든 설정 파일은 기본적으로 /etc/nginx/ 경로에 위치한다. Nginx 설정은 '중앙 통제실'에서 '세부 지침서'들을 불러오는 구조다.

2.2.1 중앙 설정 파일: nginx.conf

최상위 설정 파일로 서버 전체 동작 방식을 결정한다. 내부를 보면 다른 경로의 설정 파일들을 include하는 구문이 있다.

include /etc/nginx/modules-enabled/*.conf;   # 모듈 설정 포함
include /etc/nginx/conf.d/*.conf;            # 사용자 정의 설정 포함
include /etc/nginx/sites-enabled/*;          # 개별 사이트 설정 포함

파일을 분리 관리하는 이유는 유지보수 편의성이다. 모든 설정을 한 파일에 몰지 않고 서비스별로 나눈 뒤 include로 불러온다.

2.2.2 사이트 설정: sites-available vs sites-enabled

Nginx 설정에서 가장 핵심적인 두 디렉토리다.

  • sites-available — 실제 개별 서비스(포트·라우팅 등) 설정 파일 보관소(원본).
  • sites-enabled — 여기에 링크된 설정만 Nginx가 실제로 읽어 실행(활성화된 설정).
  • 보통 sites-available에 default 파일이 있고, 그 안에 포트(listen)·도메인(server_name)·라우팅(location) 설정이 들어 있다.

2.2.3 요약: 설정의 흐름

  1. nginx.conf — 전체 틀을 잡고 세부 설정을 총괄.
  2. 세부 .conf 파일 — 실제 서비스의 포트·주소 등을 정의하며, nginx.conf에 include되어 기동.

3. CentOS / RedHat 환경에서 설치 (RPM 계열)

CentOS·RedHat 계열(RHEL, Rocky Linux 등)은 yum 또는 dnf 패키지 관리자를 쓴다. 설치 과정은 Ubuntu와 매우 유사하지만 한 가지 주의할 점이 있다.

3.1 EPEL 저장소 활성화

CentOS 7 이상의 기본 저장소엔 Nginx가 없는 경우가 많다. 따라서 엔터프라이즈 리눅스용 추가 패키지 저장소인 EPEL(Extra Packages for Enterprise Linux)을 먼저 설치해야 한다.

sudo yum install epel-release -y
sudo yum install nginx -y

서비스 관리는 Ubuntu와 동일:

sudo systemctl start nginx
sudo systemctl enable nginx

설치 이후 세부 설정·서비스 관리는 앞의 Ubuntu와 동일하므로 해당 내용을 참고하면 된다.

4. 방화벽(Firewall) 설정

Nginx 설치를 마쳤는데 브라우저에서 '사이트에 연결할 수 없음'이 뜬다면 십중팔구 방화벽 문제다. 서버 자체 방화벽AWS 보안 그룹 두 곳을 모두 확인해야 한다.

4.1 리눅스 OS 방화벽

OS에 따라 아래 명령어로 80(HTTP)·443(HTTPS) 포트를 개방한다.

Ubuntu (UFW):

sudo ufw allow 'Nginx Full'

CentOS (firewalld):

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

4.2 AWS 보안 그룹 (AWS 사용 시)

클라우드(AWS) 환경이면 리눅스 내부 설정만으론 부족하다. AWS Console 인스턴스 설정에서 인바운드 규칙(Inbound Rules)을 확인하자.

  • HTTP (80) — Source 0.0.0.0/0 (전체 허용)
  • HTTPS (443) — Source 0.0.0.0/0 (전체 허용)

5. 설치 결과 확인

모든 설정이 끝났다면 웹 브라우저 주소창에 서버의 공인 IP를 입력해 접속해 본다.

웹 브라우저에 Welcome to nginx 접속 성공 화면 그림 6. Nginx 접속 완료 — Welcome to nginx!

위와 같이 "Welcome to nginx!" 페이지가 나타나면 설치 및 네트워크 설정이 완벽히 완료된 것이다.


📦 이 글은 제가 운영하던 티스토리 블로그에서 옮겨온(migration) 글입니다. 원문: taehyuklee.tistory.com/30

이 글 공유𝕏f

댓글