피드로 돌아가기
I replaced nginx with a reverse proxy I wrote in Go
Dev.toDev.to
Infrastructure

Go 기반 커스텀 Reverse Proxy 개발을 통한 Nginx 설정 복잡성 제거

I replaced nginx with a reverse proxy I wrote in Go

Niix2026년 5월 20일2intermediate

Context

Nginx의 복잡한 설정 문법과 불투명한 동작 방식으로 인한 운영 효율성 저하 발생. 특히 Connection Upgrade 설정 등 특정 헤더 제어 시 발생하는 높은 학습 곡선과 설정 관리의 어려움을 해결하고자 함.

Technical Solution

  • Go 언어의 net/http/httputil 패키지를 활용한 고성능 Proxy 엔진 구현
  • YAML 기반의 선언적 설정을 통해 Host 및 Path 기반 라우팅과 Priority Ordering 구조 설계
  • SNI(Server Name Indication)를 통한 호스트네임별 TLS 인증서 선택 로직 적용
  • Atomic Counter 기반의 Flattened Target Slice 구조로 Weighted Round-Robin 로드 밸런싱 구현
  • Let's Encrypt 자동화를 내장하여 Certbot 등 외부 의존성 없는 TLS 인증서 관리 체계 구축
  • 별도의 모니터링 스택 없이 실시간 트래픽과 Latency 확인이 가능한 전용 TUI Dashboard 개발

1. 표준 라이브러리(httputil)를 활용한 Proxy 구현 가능성 검토

2. 선언적 설정(YAML/JSON)을 통한 인프라 구성의 가시성 확보

3. SNI 기반의 멀티 도메인 인증서 처리 로직 설계 확인

4. Atomic 연산을 이용한 무상태(Stateless) 로드 밸런싱 알고리즘 적용

원문 읽기