피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Go 기반 커스텀 Reverse Proxy 개발을 통한 Nginx 설정 복잡성 제거
I replaced nginx with a reverse proxy I wrote in Go
AI 요약
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) 로드 밸런싱 알고리즘 적용