Nginx(엔진엑스)는 고성능 웹 서버, 리버스 프록시, 로드 밸런서, HTTP 캐시 등으로 널리 사용되는 오픈 소스 소프트웨어입니다. 특히 동시 접속자가 많은 환경에서 탁월한 성능을 발휘하여, 2025년 현재까지도 가장 인기 있는 웹 서버 솔루션 중 하나로 자리매김하고 있습니다. 이 포스팅에서는 가장 대중적으로 사용되는 리눅스 배포판인 CentOS와 Ubuntu 환경에서 Nginx를 설치하고 기본적인 설정을 완료하는 방법을 상세하게 안내합니다. 최신 버전의 Nginx를 설치하여 빠르고 안정적인 웹 서비스를 구축하는 것이 중요합니다.
📚 함께 읽으면 좋은 글
2024년의 웹 서버 트렌드는 보안 강화와 HTTP/3 같은 최신 프로토콜 지원에 중점을 두었으며, 2025년에는 이러한 안정성과 속도 개선 기능이 Nginx의 기본 패키지에 더욱 통합되고 있습니다. 따라서 최신 버전을 설치하는 것이 성능과 보안 모두를 확보하는 가장 좋은 방법입니다.
Ubuntu 최신 Nginx 설치 및 기본 설정 확인하기
Ubuntu 환경에서 Nginx를 설치하는 가장 일반적이고 안정적인 방법은 apt 패키지 관리자를 이용하는 것입니다. 다음 단계를 따라 최신 Nginx를 설치하고 기본 설정을 확인해 보세요.
- 패키지 목록 업데이트: 시스템의 패키지 목록을 최신 상태로 업데이트합니다.
sudo apt update - Nginx 설치: Nginx 패키지를 설치합니다.
sudo apt install nginx - 방화벽 설정: Nginx가 웹 트래픽을 처리할 수 있도록 방화벽(UFW) 설정을 조정합니다. UFW가 활성화되어 있다면 Nginx 관련 프로파일을 허용해야 합니다.
sudo ufw allow 'Nginx Full' sudo ufw enable
- Nginx 서비스 확인: 설치 후 Nginx 서비스가 자동으로 시작되는지 확인하고, 상태를 점검합니다.
sudo systemctl status nginx
상태가 active (running)으로 표시되면 설치가 성공적으로 완료된 것입니다. 웹 브라우저에 서버의 IP 주소를 입력하여 기본 Nginx 환영 페이지가 뜨는지 확인해 볼 수 있습니다.
CentOS 환경 Nginx 설치 및 리포지토리 설정 상세 더보기
CentOS (또는 RHEL 계열) 환경에서는 기본 yum/dnf 리포지토리에 포함된 Nginx 버전이 최신이 아닐 수 있습니다. 따라서 안정적인 최신 버전을 설치하려면 Nginx 공식 리포지토리를 추가하는 것이 좋습니다.
Nginx 공식 리포지토리 추가 확인하기
다음 명령을 사용하여 /etc/yum.repos.d/nginx.repo 파일을 생성하고 내용을 추가합니다. 이렇게 하면 dnf/yum을 통해 Nginx의 최신 버전을 관리할 수 있게 됩니다.
sudo dnf install nano # 또는 vi/vim sudo nano /etc/yum.repos.d/nginx.repo
파일에 다음 내용을 붙여넣습니다 (CentOS 8+ 기준).
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key
CentOS에 Nginx 설치 보기
리포지토리를 추가했으면 dnf 명령으로 Nginx를 설치합니다.
sudo dnf install nginx
CentOS 방화벽 (FirewallD) 설정 확인하기
CentOS는 일반적으로 Firewalld를 사용합니다. 웹 접속을 허용하려면 HTTP (80 포트)와 HTTPS (443 포트)를 열어주어야 합니다.
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Nginx를 시작하고 부팅 시 자동 시작되도록 설정합니다.
sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl status nginx
Nginx 기본 설정 및 가상 호스트 구성 확인하기
Nginx는 설정 파일이 잘 구성되어 있어 복잡한 설정 없이도 높은 성능을 낼 수 있습니다. 기본 설정 파일은 /etc/nginx/nginx.conf이며, 가상 호스트(Virtual Host) 설정은 주로 /etc/nginx/conf.d/ 또는 /etc/nginx/sites-available/ 디렉토리에 위치합니다 (배포판에 따라 다름).
Nginx 주요 설정 파일 상세 더보기
새로운 웹사이트를 추가하려면, /etc/nginx/conf.d/ 디렉토리에 [도메인].conf 형식의 설정 파일을 생성하는 것이 일반적입니다. 예를 들어, 다음과 같은 간단한 서버 블록을 작성할 수 있습니다.
server { listen 80; listen [::]:80; server_name example.com www.example.com;
root /var/www/[example.com/html](https://example.com/html);
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
설정 파일 테스트 및 서비스 재시작 보기
설정 파일을 수정했다면, 적용하기 전에 문법 오류가 없는지 테스트하는 것이 필수입니다. 오류가 없으면 Nginx 서비스를 재시작하여 변경 사항을 반영합니다.
sudo nginx -t # 설정 파일 문법 테스트 sudo systemctl reload nginx # 서비스 재시작 (설정 파일만 다시 로드)
Nginx 성능 최적화 및 보안 고려 사항 보기
Nginx 설치 후에는 성능 향상 및 보안 강화를 위한 추가 설정이 필요합니다. 2025년 웹 서버 운영에 있어 HTTPS 의무화와 강력한 보안 설정은 기본 요소입니다.
SSL/TLS (HTTPS) 구현 상세 더보기
HTTPS는 이제 웹사이트의 필수 요소이며, 검색 엔진 최적화(SEO)에도 중요한 영향을 미칩니다. Let’s Encrypt와 같은 무료 SSL 인증서를 사용하여 쉽게 구현할 수 있습니다. Nginx 설정 파일에 SSL 인증서 경로를 지정하고 80 포트(HTTP)로 들어오는 요청을 443 포트(HTTPS)로 리다이렉션하는 설정을 추가해야 합니다.
Worker 프로세스 및 Connection 최적화 확인하기
nginx.conf 파일에서 worker_processes를 서버의 CPU 코어 수와 같거나 2배로 설정하고, worker_connections 값을 충분히 높여서 Nginx가 처리할 수 있는 동시 접속자 수를 최적화할 수 있습니다. 이는 특히 2024년의 트래픽 급증 상황에서 서버 안정성을 높이는 데 핵심적인 역할을 합니다.
worker_processes auto; # CPU 코어 수에 맞게 자동 설정 events { worker_connections 1024; # 각 워커 프로세스가 처리할 최대 연결 수 }
📌 추가로 참고할 만한 글
자주 묻는 질문 (FAQ)
| 질문 | 답변 |
|---|---|
| Nginx 설치 후 ‘Welcome to Nginx’ 페이지가 보이지 않습니다. | 가장 흔한 원인은 방화벽 문제입니다. 서버의 방화벽(UFW 또는 Firewalld)에서 80 포트(HTTP)와 443 포트(HTTPS)가 열려 있는지 확인하고, Nginx 서비스가 활성화(sudo systemctl status nginx)되어 있는지 확인해야 합니다. |
| Nginx를 최신 버전으로 업데이트하려면 어떻게 해야 하나요? | Ubuntu에서는 sudo apt update && sudo apt upgrade nginx를, CentOS에서는 공식 리포지토리가 추가된 경우 sudo dnf update nginx를 사용합니다. 주기적인 업데이트는 보안 취약점 패치 및 최신 기능 활용에 필수적입니다. |
| Nginx와 Apache의 가장 큰 차이점은 무엇인가요? | Nginx는 이벤트 기반(Event-driven) 아키텍처를 사용하여 적은 자원으로도 높은 동시 접속 처리에 유리하며, 주로 정적 파일 처리와 리버스 프록시에 강합니다. Apache는 모듈 구조와 프로세스 기반으로 유연성이 높지만, 대규모 동시 접속 처리에는 Nginx가 더 효율적입니다. |
Nginx 설정 파일 수정 후 항상 reload 대신 restart를 해야 하나요? |
아닙니다. 설정 파일(conf) 수정만으로는 sudo systemctl reload nginx 명령이 가장 좋습니다. 이 명령은 서비스를 중단하지 않고 변경된 설정만 다시 로드하여 서비스 중단 없이 적용할 수 있게 해줍니다. restart는 전체 서비스를 중지했다가 다시 시작하므로 잠시 서비스 중단이 발생할 수 있습니다. |