Nginx Reverse Proxy 정리
2024. 5. 18. 13:09ㆍ개발노트
리버스 프록시란?
리버스 프록시는 클라이언트로부터의 요청을 받아 이를 적절한 백엔드 서버에 전달하고 백엔드 서버의 응답을 다시 클라이언트로 전달하는 역할을 한다.
이 글에서는 Nginx 리버스 프록시에 대한 주요 기능과 기본 설정만 정리한다.
자세한 내용은 공식 문서 참고 https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
Nginx 리버스 프록시 주요 기능
- 로드 밸런싱(Load Balancong)
- Nginx는 여러 백엔드 서버로 트래픽을 분산시켜 서버 간 부하를 균등하게 분산시킬 수 있다.
- 라운드 로빈, 가중치 기반 분산, IP 해시 등 다양한 기법을 지원한다.
- SSL/TLS 종료(SSL/TLS 1 Termination) 2
- Nginx는 클라이트와의 SSL/TLS 연결을 처리하여 백엔드 서버가 암호화되지 않은 트래픽만 처리하도록 할 수 있다.
이를 통해 백엔드 서버의 부하를 줄이고 SSL 인증서를 중앙에서 관리할 수 있다.
- Nginx는 클라이트와의 SSL/TLS 연결을 처리하여 백엔드 서버가 암호화되지 않은 트래픽만 처리하도록 할 수 있다.
- 캐싱
- 정적 콘텐츠나 API 응답 등을 캐싱하여 서버 부하를 줄이고 응답 시간을 단축할 수 있다.
- 특정 조건에 따라 캐시를 제여 할 수 있다.
- 압축
- Nginx는 클라이언트로 전달하기 전에 응답 데이터를 압축하여 전송 시간을 줄일 수 있다.
- 보안
- 클라이언트와 백엔드 서버 간의 통신을 분리하려 보안을 강화할 수 있다.
- 방화벽 기능, IP 차단, DDoS 방어 등을 통해 서버를 보호할 수 있다.
Nginx 리버스 프록시 설정 예시
Nginx가 example.com 도메인으로 들어오는 요청을 백엔드 서버(예: http://localhost:8080)로 전달
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
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;
}
}
- listen: Nginx가 청취할 포트 번호를 지정
- location /: 모든 요청을 처리할 위치 블록을 정의
- proxy_pass: 요청을 전달할 백엔드 서버의 주소를 지정
- proxy_set_header: 백엔드 서버로 전달할 헤더를 설정, 이를 통해 클라이언트의 원래 IP 주소와 프로토콜 정보를 백엔드 서버가 알 수 있게 한다.