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 # 특정버전의 nginx 설치

서비스 관리:

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

2.1 절차에 대한 세부 설명

(왼쪽) apt package update (오른쪽) nginx install 그림1. (왼쪽) apt package update / (오른쪽) nginx install

2.1.1 sudo apt update / sudo apt install nginx 수행

우선, apt 저장소 update를 해주고 (특히 최신 버전을 반영하기 위해서는 저장소를 update하는 것이 좋습니다)

그림1의 왼쪽 그림은 apt update를 한 결과이며, 오른쪽 그림은 apt저장소를 통해 nginx를 설치했을때를 보여주고 있습니다. 중간에 (Y/n)이 나올텐데 'Y'를 입력하고 계속 하시면 됩니다.

apt를 통해 nginx설치 결과 그림2. apt를 통해 nginx설치 결과

apt를 통해 nginx를 설치하면, linux service에 자동으로 등록해주기때문에 systemctl (리눅스 서비스(데몬)의 총괄 관리자)을 통해서 직접적으로 상태 확인이나 끄고 킬수 있습니다.

systemctl을 통해 nginx상태 확인 그림3. systemctl을 통해 nginx상태 확인

sudo systemctl status nginx을 통해 nginx상태를 확인이 가능합니다. apt를 통해 nginx를 설치하면 default config로 실행이 되게 됩니다.

2.2 Nginx 설정(Configuration) 파일 구조 및 경로 이해하기

nginx config파일 경로 그림4. nginx config파일 경로

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

2.2.1 중앙 설정 파일: nginx.conf

Nginx의 가장 최상위 설정 파일입니다. 서버 전체의 동작 방식을 결정하며, 내부를 보면 아래와 같이 다른 경로의 설정 파일들을 포함(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. 요약: 설정의 흐름

  • nginx.conf: 전체적인 틀을 잡고 세부 설정들을 총괄합니다.
  • 세부 .conf 파일들: 실제 서비스의 포트 번호나 주소 등을 정의하며, nginx.conf에 의해 포함되어 기동됩니다.

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

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

3.1 EPEL 저장소 활성화

CentOS 7 이상의 기본 저장소에는 Nginx가 포함되어 있지 않은 경우가 많습니다. 따라서 엔터프라이즈 리눅스용 추가 패키지 저장소인 EPEL(Extra Packages for Enterprise Linux)을 먼저 설치해야 합니다.

  • 패키지 관리자: yum 또는 dnf
  • 특이사항: CentOS 7 이상에서는 epel-release 저장소를 먼저 설치해야 하는 경우가 많습니다.
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 보안 그룹(Security Group) 두 곳을 모두 확인해야 합니다.

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 보안 그룹(Security Group) 설정 (AWS사용할 경우)

클라우드 환경(AWS)을 사용 중이라면 리눅스 내부 설정만으로는 부족합니다. AWS Console의 인스턴스 설정에서 인바운드 규칙(Inbound Rules)을 확인하세요.

  • HTTP (80번 포트): Source 0.0.0.0/0 (전체 허용)
  • HTTPS (443번 포트): Source 0.0.0.0/0 (전체 허용)

5. 설치 결과 확인

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

Nginx 접속 완료 그림5. Nginx 접속 완료

위와 같이 "Welcome to nginx!"라는 문구가 적힌 페이지가 나타난다면 설치 및 네트워크 설정이 완벽하게 완료된 것입니다.


📦 블로그 이전 글입니다. 원본: taehyuklee.tistory.com/30

이 글 공유𝕏f

댓글