Nginx Reverse Proxy 설정 가이드
Nginx는 강력한 웹 서버이며, 리버스 프록시 서버로도 널리 사용됩니다. 리버스 프록시는 클라이언트 요청을 백엔드 서버로 전달하고, 백엔드 서버의 응답을 클라이언트에게 반환하는 역할을 합니다. 이를 통해 보안 강화, 로드 밸런싱, 캐싱 최적화 등의 이점을 제공할 수 있습니다. 본 가이드에서는 Nginx를 리버스 프록시로 설정하는 방법을 단계별로 설명하며, SSL 적용, 부하 분산, 캐싱 및 압축 등의 고급 설정 방법까지 다룹니다.
Nginx 리버스 프록시란?
리버스 프록시는 클라이언트가 직접 백엔드 서버와 통신하는 대신 프록시 서버를 통해 요청을 전달하고 응답을 반환받는 방식입니다. 일반적인 프록시 서버가 클라이언트의 요청을 외부 서버로 전달하는 것과 달리, 리버스 프록시는 외부 클라이언트의 요청을 내부 서버로 라우팅하는 역할을 합니다.
리버스 프록시의 주요 장점
- 보안 강화: 클라이언트가 직접 백엔드 서버에 접근하지 못하도록 보호할 수 있습니다.
- 로드 밸런싱: 여러 개의 백엔드 서버로 요청을 분산하여 부하를 줄이고 성능을 최적화할 수 있습니다.
- 캐싱 최적화: 정적인 콘텐츠를 캐싱하여 응답 속도를 개선하고 서버 부하를 줄일 수 있습니다.
- SSL 처리: HTTPS 트래픽을 처리하여 백엔드 서버에서 부담을 줄이고 보안을 강화할 수 있습니다.
Nginx 설치 및 기본 설정
1. Nginx 설치하기
먼저, Nginx를 설치해야 합니다. Ubuntu 서버 기준으로 다음 명령어를 실행합니다.
sudo apt update
sudo apt install nginx -y
설치가 완료되면 Nginx가 정상적으로 실행되고 있는지 확인합니다.
sudo systemctl status nginx
Nginx가 실행 중이라면 설정을 진행할 수 있습니다.
2. 방화벽 설정
기본적으로 Nginx는 80번(HTTP)과 443번(HTTPS) 포트를 사용합니다. 방화벽에서 해당 포트를 열어줍니다.
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status
리버스 프록시 설정 파일 구성
Nginx의 설정 파일은 /etc/nginx/sites-available/
또는 /etc/nginx/nginx.conf
에 위치합니다.
기본적인 리버스 프록시 설정은 다음과 같습니다.
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
위 설정은 yourdomain.com
으로 들어오는 요청을 로컬의 3000번 포트로 전달하는 역할을 합니다.
설정 적용하기
설정 파일을 적용하려면 다음 명령어를 실행합니다.
sudo ln -s /etc/nginx/sites-available/yourdomain /etc/nginx/sites-enabled/
sudo nginx -t # 설정 오류 확인
sudo systemctl restart nginx
설정이 올바르게 적용되었는지 확인하려면 웹 브라우저에서 yourdomain.com
을 입력하여 응답을 확인하면 됩니다.
SSL(HTTPS) 적용하기
HTTPS를 적용하면 트래픽이 암호화되어 보안이 강화됩니다. 무료 SSL 인증서인 Let's Encrypt를 이용하여 SSL을 적용하는 방법을 설명합니다.
1. Certbot 설치 및 SSL 인증서 발급
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
설정이 완료되면 브라우저에서 https://yourdomain.com
으로 접속하여 SSL이 정상적으로 적용되었는지 확인합니다.
2. SSL 자동 갱신 설정
sudo certbot renew --dry-run
로드 밸런싱 설정하기
Nginx를 사용하여 여러 개의 백엔드 서버로 트래픽을 분산하는 방법을 설명합니다.
기본 로드 밸런싱 설정
upstream backend_servers {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://backend_servers;
}
}
이 설정은 192.168.1.101, 192.168.1.102, 192.168.1.103 세 개의 백엔드 서버로 트래픽을 분산하는 역할을 합니다.
캐시 및 압축 설정
웹사이트 성능을 최적화하기 위해 Nginx에서 캐싱과 압축을 설정할 수 있습니다.
캐시 설정
location / {
proxy_cache my_cache;
proxy_cache_valid 200 1h;
}
Gzip 압축 활성화
gzip on;
gzip_types text/plain text/css application/json application/javascript;
문제 해결 및 디버깅
설정이 제대로 적용되지 않거나 문제가 발생할 경우 로그를 확인하여 원인을 파악할 수 있습니다.
로그 확인
sudo tail -f /var/log/nginx/error.log
Nginx 재시작 및 테스트
sudo nginx -t
sudo systemctl restart nginx
'운영체제 (OS) > 리눅스 (Linux)' 카테고리의 다른 글
Nginx 캐싱 설정 완벽 가이드: 웹사이트 속도 200% 향상시키는 법 (2) | 2025.02.02 |
---|---|
Nginx 설정 가이드, 기본부터 최적화까지 (2) | 2025.02.01 |
리눅스 서버 구축, 따라 하면 완성되는 설정법 (1) | 2025.01.31 |
우분투 22.04 LTS 설치 후 꼭 해야 할 기본 설정 (1) | 2025.01.29 |
우분투에서 FTP 서버 설정하기: vsftpd 설치부터 Nginx 가상 호스팅까지 (0) | 2025.01.29 |