반응형
🌐 Nginx 설정과 활용법
Nginx는 웹 서버, 리버스 프록시, 로드 밸런싱 등 다양한 용도로 활용할 수 있는 만능 도구라서, 제대로 이해하고 활용하면 큰 도움이 됩니다. 아래는 Nginx로 할 수 있는 주요 작업 10가지와 구체적인 설정 방법입니다.
1. 🌐 기본 웹 서버 설정
설정 내용
Nginx를 웹 서버로 설정하여 정적 파일(HTML, CSS, JS)을 서빙합니다.
설정 파일 (nginx.conf
)
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
도커로 실행
nginx.conf
파일을 생성합니다.- 도커 컨테이너 실행 시 설정 파일을 마운트합니다.
docker run -d -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf nginx
2. 🚀 리버스 프록시 설정
설정 내용
백엔드 서버(예: Node.js, Python 등)에 요청을 전달하는 리버스 프록시 설정입니다.
설정 파일
server {
listen 80;
location / {
proxy_pass http://backend:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
도커 네트워크 활용
- 백엔드 컨테이너를
backend
라는 이름으로 실행합니다. - 도커 네트워크를 공유하도록 설정합니다.
docker network create my-network
docker run --network my-network --name backend my-backend-image
docker run --network my-network -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf -p 80:80 nginx
3. 🔄 로드 밸런싱 (Round Robin)
설정 내용
Nginx를 사용하여 여러 백엔드 서버에 로드 밸런싱을 적용합니다.
설정 파일
upstream backend_servers {
server backend1:3000;
server backend2:3000;
}
server {
listen 80;
location / {
proxy_pass http://backend_servers;
}
}
실행
docker network create lb-network
docker run --network lb-network --name backend1 my-backend-image
docker run --network lb-network --name backend2 my-backend-image
docker run --network lb-network -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf -p 80:80 nginx
4. 📡 로드 밸런싱 (Least Connections)
설정 내용
least_conn
방식으로 트래픽을 처리하도록 설정합니다.
설정 파일
upstream backend_servers {
least_conn;
server backend1:3000;
server backend2:3000;
}
server {
listen 80;
location / {
proxy_pass http://backend_servers;
}
}
5. 🔒 HTTPS 설정
설정 내용
Let's Encrypt를 사용해 HTTPS를 적용합니다.
설정 파일
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://backend:3000;
}
}
SSL 인증서 마운트
docker run -d -p 443:443 \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
-v $(pwd)/ssl:/etc/nginx/ssl nginx
6. 🏠 서브도메인 분기 처리
설정 내용
서브도메인 별로 다른 백엔드로 요청을 전달합니다.
설정 파일
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://api_backend:3000;
}
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://web_backend:3000;
}
}
7. 📦 캐싱 설정
설정 내용
정적 파일에 대한 캐싱을 설정합니다.
설정 파일
server {
listen 80;
location /static/ {
root /usr/share/nginx/html;
expires 30d;
add_header Cache-Control "public, must-revalidate";
}
}
8. 🛡️ 방화벽 역할 (IP 제한)
설정 내용
특정 IP 주소만 접근 가능하도록 설정합니다.
설정 파일
server {
listen 80;
location / {
allow 192.168.1.1;
deny all;
}
}
9. 🔍 Forward Proxy
설정 내용
Nginx를 클라이언트용 포워드 프록시로 사용합니다.
설정 파일
server {
listen 8888;
location / {
proxy_pass $scheme://$http_host$request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
10. 📜 Custom Error Pages
설정 내용
404 에러 시 사용자 정의 에러 페이지를 반환합니다.
설정 파일
server {
listen 80;
error_page 404 /custom_404.html;
location /custom_404.html {
root /usr/share/nginx/html;
}
}
🛠️ 설정 확인 및 재시작
설정 파일 확인
docker exec -it <nginx-container-id> nginx -t
설정 적용
docker restart <nginx-container-id>
📌 요약
- Nginx의 주요 활용: 웹 서버, 리버스 프록시, 로드 밸런싱, HTTPS, 캐싱 등.
- 도커와 함께 사용:
-v
옵션으로 설정 파일을 마운트하여 관리. - 로드 밸런싱: Round Robin, Least Connections 등 다양한 방식 지원.
- 보안 및 최적화: IP 제한, 캐싱, HTTPS 설정.
반응형
'Nginx' 카테고리의 다른 글
[Nginx]IFRAM 강제 (X-Fraome-Option 헤더 삭제) (0) | 2023.04.13 |
---|