Nginx 설정 가이드, 기본부터 최적화까지
Nginx는 가볍고 빠른 성능을 제공하는 웹 서버로, 많은 사이트에서 활용되고 있습니다.
특히 정적 콘텐츠 제공, 리버스 프록시, 로드 밸런싱 등의 기능을 통해 서버 성능을 최적화할 수 있습니다.
이 글에서는 Nginx의 기본 설정부터 고급 최적화 방법까지 상세히 설명하겠습니다.
Nginx 개요와 주요 기능
Nginx는 비동기 이벤트 기반 아키텍처를 채택하여 높은 성능과 확장성을 제공하는 웹 서버입니다.
기존의 Apache 서버보다 적은 리소스로 더 많은 요청을 처리할 수 있으며, 대규모 트래픽을 감당할 수 있습니다.
Nginx의 주요 기능
- 정적 파일 제공 속도가 빠르고 효율적입니다.
- 리버스 프록시 및 로드 밸런서 역할을 수행할 수 있습니다.
- 다중 연결을 효율적으로 처리하는 이벤트 기반 구조를 가집니다.
- SSL/TLS 및 보안 설정이 용이합니다.
- 캐싱을 활용하여 웹사이트 로딩 속도를 최적화할 수 있습니다.
Nginx 설치 및 기본 설정
운영체제별로 Nginx를 설치하는 방법을 살펴보겠습니다.
Ubuntu/Debian 설치
sudo apt update
sudo apt install nginx -y
설치 후 실행 및 부팅 시 자동 시작 설정:
```bash
sudo systemctl start nginx
sudo systemctl enable nginx
CentOS/RHEL 설치
sudo yum install epel-release -y
sudo yum install nginx -y
설치 후 실행:
sudo systemctl start nginx
sudo systemctl enable nginx
설치가 완료되면 웹 브라우저에서 http://localhost
로 접속하여 Nginx 기본 페이지를 확인할 수 있습니다.
주요 설정 파일과 구조
Nginx의 설정 파일은 /etc/nginx/nginx.conf
이며, 주요 파일 구조는 다음과 같습니다.
디렉터리 구조
/etc/nginx/nginx.conf
→ 메인 설정 파일/etc/nginx/sites-available/
→ 가상 호스트 설정 파일/etc/nginx/sites-enabled/
→ 활성화된 사이트 설정 파일/var/www/html/
→ 기본 웹 페이지 디렉터리/etc/nginx/conf.d/
→ 추가 설정 파일 저장
기본 설정 예제
worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html index.htm;
}
}
설정을 적용한 후, Nginx를 재시작해야 합니다.
sudo systemctl restart nginx
정적 파일 캐싱 및 성능 최적화
Nginx는 정적 파일을 빠르게 제공하는 기능을 갖추고 있습니다.
아래 설정을 적용하면 정적 파일 요청 속도를 향상시킬 수 있습니다.
server {
location /static/ {
root /var/www/html;
expires 30d;
add_header Cache-Control "public, max-age=2592000";
}
}
설정 설명
expires 30d
→ 정적 파일을 30일 동안 캐싱합니다.Cache-Control
→ 브라우저 캐싱을 최적화하여 로딩 속도를 개선합니다.
캐싱을 적절히 활용하면 서버 부하를 줄이고 응답 속도를 향상할 수 있습니다.
리버스 프록시 설정과 활용법
Nginx는 리버스 프록시로도 활용할 수 있으며, 백엔드 서버(예: Node.js, Python, PHP)와 연동하여 요청을 처리할 수 있습니다.
server {
listen 80;
server_name mysite.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
설정 설명
proxy_pass
→ 요청을 내부 서버(127.0.0.1:3000)로 전달합니다.proxy_set_header
→ 클라이언트의 원본 IP를 유지합니다.
이 설정을 적용하면 Nginx가 백엔드 서버와 연동하여 웹 요청을 처리할 수 있습니다.
보안 강화 설정 및 실용 팁
웹 서버 보안 강화를 위해 다음과 같은 설정을 적용할 수 있습니다.
SSL/TLS 활성화
server {
listen 443 ssl;
server_name mysite.com;
ssl_certificate /etc/nginx/ssl/mysite.crt;
ssl_certificate_key /etc/nginx/ssl/mysite.key;
}
서버 정보 숨기기
server_tokens off;
IP 기반 접근 제한
location /admin {
allow 192.168.1.100;
deny all;
}
이 설정을 적용하면 특정 IP에서만 /admin
경로에 접근할 수 있습니다.
성능 최적화를 위한 고급 기법
Nginx의 성능을 극대화하는 몇 가지 추가 설정을 살펴보겠습니다.
Gzip 압축 활성화
gzip on;
gzip_types text/plain text/css application/json application/javascript;
Keep-Alive 설정 최적화
keepalive_timeout 65;
keepalive_requests 1000;
Worker 프로세스 최적화
worker_processes auto;
worker_connections 2048;
이 설정을 적용하면 성능이 더욱 향상될 수 있습니다.
'운영체제 (OS) > 리눅스 (Linux)' 카테고리의 다른 글
Nginx 캐싱 설정 완벽 가이드: 웹사이트 속도 200% 향상시키는 법 (2) | 2025.02.02 |
---|---|
Nginx Reverse Proxy 설정 가이드 (1) | 2025.02.01 |
리눅스 서버 구축, 따라 하면 완성되는 설정법 (1) | 2025.01.31 |
우분투 22.04 LTS 설치 후 꼭 해야 할 기본 설정 (1) | 2025.01.29 |
우분투에서 FTP 서버 설정하기: vsftpd 설치부터 Nginx 가상 호스팅까지 (0) | 2025.01.29 |