Overview
이 글에서는 Nginx에 대해 알아보고, 설치부터 기본 설정 및 활용법까지 다룰 것이다.
Nginx는 빠르고 가벼운 웹 서버이면서도 Reverse Proxy 및 로드 밸런서 역할을 수행할 수 있어
많은 기업에서 애플리케이션 배포에 필수적으로 사용된다.
Nginx란?
Nginx (Engine-X) 는 빠르고 가벼운 웹 서버로, 다양한 목적으로 활용된다.
Nginx 주요 기능
1️⃣ 정적 파일 웹 서버 (HTTP Web Server)
- 클라이언트 요청을 받아 정적 파일(HTML, CSS, JS 등)을 제공한다.
2️⃣ Reverse Proxy (리버스 프록시)
- 클라이언트 요청을 받아 백엔드 서버(WAS)에 전달하는 역할
- 부하 분산(로드 밸런싱) 기능을 수행할 수 있음
3️⃣ 로드 밸런서 (Load Balancer)
- 여러 서버(WAS)로 트래픽을 분산하여 서버 부하를 줄인다.
4️⃣ 캐싱 (Caching)
- 자주 요청되는 데이터를 캐싱하여 성능 향상 가능
5️⃣ SSL/TLS 지원 (HTTPS)
- SSL/TLS를 활용하여 보안 강화 가능
Nginx 설치 및 설정
1️⃣ Nginx 저장소 설정 (CentOS 7 기준)
기본적으로 CentOS의 기본 저장소에는 Nginx 패키지가 포함되지 않음
따라서 Nginx 공식 저장소를 추가해야 한다.
# 저장소 설정 디렉터리 이동
cd /etc/yum.repos.d/
# Nginx 저장소 파일 생성
vi nginx.repo
다음 내용을 입력한다.
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch
gpgcheck=0
enabled=1
이제 CentOS에서 Nginx 패키지를 설치할 수 있다!
2️⃣ Nginx 패키지 설치 및 방화벽 설정
# Nginx 패키지 설치
yum -y install nginx-*
# 방화벽에 8080 포트 추가 (기본적으로 80 포트 사용)
firewall-cmd --permanent --add-port=8080/tcp
# 방화벽 설정 적용
firewall-cmd --reload
Nginx가 정상적으로 설치되었으며, 8080 포트도 열려 있다.
3️⃣ Nginx 서비스 시작 및 활성화
# Nginx 서비스 활성화 (재부팅 후에도 자동 실행됨)
systemctl enable nginx
# Nginx 서비스 시작
systemctl start nginx
# Nginx 상태 확인
systemctl status nginx
Nginx가 실행 중이면 성공!
4️⃣ Nginx 기본 설정 변경
Nginx의 기본 설정 파일은 `/etc/nginx/nginx.conf` 또는 `/etc/nginx/conf.d/default.conf` 에 위치한다.
이제 8080 포트에서 Nginx가 실행되도록 수정해보자.
# 설정 파일 위치 이동
cd /etc/nginx/conf.d/
# 기본 설정 파일 편집
vi default.conf
다음과 같이 설정을 변경한다.
server {
listen 8080; # 포트 변경 (기본: 80)
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
수정 완료 후 Nginx 재시작
systemctl restart nginx
웹 브라우저에서 `http://<서버IP>:8080` 으로 접속하면 Nginx 기본 페이지가 출력된다.
Nginx 주요 설정 옵션
Nginx는 다양한 설정 옵션을 제공하며, 주요 옵션을 정리해보았다.
옵션 | 설명 |
listen 80; | 서버가 수신할 포트 지정 |
server_name example.com; | 도메인 또는 IP 주소 지정 |
root /var/www/html; | 웹 서버의 기본 디렉토리 |
index index.html index.htm; | 기본 파일 설정 |
location / | 특정 URL 요청을 처리하는 블록 |
이제 Nginx를 기본적인 웹 서버로 활용할 준비가 완료되었다.
Nginx 추가 활용법
1️⃣ Reverse Proxy 설정
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
이제 Nginx가 5000번 포트에서 실행되는 애플리케이션(WAS)과 연결된다.
2️⃣ 로드 밸런싱 (Load Balancing) 설정
upstream backend_servers {
server 192.168.1.10;
server 192.168.1.11;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
}
}
이제 요청이 여러 개의 서버로 분산된다.
3️⃣ HTTPS 적용 (SSL/TLS 설정)
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
location / {
root /var/www/html;
}
}
SSL/TLS를 적용하여 HTTPS를 활성화할 수 있다.
Nginx 실전 활용 예제
정적 웹사이트 호스팅
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
HTML, CSS, JS 파일을 배포하는 간단한 정적 웹 서버로 사용 가능
Node.js + Nginx 연동
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
Node.js 애플리케이션을 Nginx를 통해 서비스 가능
마무리
Nginx가 무엇인지 개념을 익혔다.
Nginx를 설치하고 기본 설정을 완료하였다.
Reverse Proxy 및 Load Balancer 기능을 활용할 수 있다.
HTTPS 및 웹사이트 호스팅을 위한 설정도 가능하다.
이제 Nginx를 활용하여 더욱 강력한 웹 서버 환경을 구축해보자!
Reference
Nginx 공식 문서
Nginx GitHub Repository
Nginx 설정 예제
'Web Server' 카테고리의 다른 글
WAS(Web Application Server) & Tomcat 설치 및 설정 (2) | 2022.02.11 |
---|---|
Apache 웹서버 설치부터 기본 설정까지 한 번에 정리하기 (0) | 2022.01.20 |