피드로 돌아가기
Setting Up a Reverse Proxy with Nginx on Ubuntu
Dev.toDev.to
DevOps

Setting Up a Reverse Proxy with Nginx on Ubuntu

Ubuntu에서 Nginx를 reverse proxy로 구성하여 proxy_pass, SSL/TLS 종료, gzip 압축으로 백엔드 보호 및 성능 최적화

Saikat Goswami2026년 3월 24일12beginner

Context

현대적 웹 애플리케이션은 마이크로서비스로 분산되고 여러 백엔드 언어로 구성되면서 단순한 웹 서버만으로는 트래픽 관리, 보안, 성능 최적화를 감당할 수 없게 되었습니다.

Technical Solution

  • proxy_pass 지시어로 클라이언트 요청을 지정된 백엔드 서버로 포워딩: server { location / { proxy_pass http://backend:3000; } }
  • proxy_set_header를 사용하여 원본 요청 정보(Host, X-Real-IP, X-Forwarded-For)를 백엔드에 전달
  • Let's Encrypt와 Certbot으로 자동화된 SSL/TLS 인증서 발급 및 갱신 구성
  • gzip 압축으로 응답 크기 감소: gzip on; gzip_types text/plain application/json;
  • 여러 backend 서버를 upstream 블록으로 정의하여 로드 밸런싱 구성

Key Takeaway

Nginx의 비동기 이벤트 기반 아키텍처는 단일 스레드에서 수천 개의 동시 연결을 처리하므로 리버스 프록시 역할에 최적화되어 있으며, proxy_pass와 SSL/TLS 종료를 통해 백엔드를 숨기면서 동시에 인프라 변경에 대한 유연성을 확보할 수 있습니다.


Ubuntu 서버에서 마이크로서비스 아키텍처를 운영 중인 팀은 Nginx를 리버스 프록시로 배치하고 proxy_pass로 트래픽을 라우팅하며 SSL/TLS 종료를 중앙화하면, 백엔드 인스턴스의 포트 변경이나 신규 서버 추가 시 클라이언트 설정 변경 없이 운영할 수 있고 보안 공격 표면을 축소할 수 있습니다.

원문 읽기