콘텐츠로 이동
Proxer Proxer v0.5.0

라우팅과 신뢰 프록시

루트 및 서브도메인 호스트를 라우팅하고 reverse proxy 뒤에서 배포합니다.

Proxer는 공개 요청을 호스트 기준으로 라우팅합니다. 모든 경로가 명시적이기 때문에 서로 다른 클라이언트가 섞이지 않습니다.


공개 도메인을 지정해 서버를 실행합니다.

proxer server --listen 0.0.0.0:8080 --domain proxy.example.com --token dev-token

--subdomain이 없는 클라이언트는 루트 경로를 등록합니다.

proxer http 3000 --server ws://proxy.example.com:8080 --token dev-token

proxy.example.com 요청은 이 클라이언트로 전달됩니다.

--subdomain demo가 있는 클라이언트는 demo.proxy.example.com을 등록합니다.

proxer http 3000 --server ws://proxy.example.com:8080 --subdomain demo --token dev-token

알 수 없는 호스트 요청은 404를 반환합니다.


DNS 없이 테스트할 때는 호스트를 직접 지정합니다.

curl -H 'Host: demo.proxy.example.com' http://127.0.0.1:8080/

localhost나 IP 기반 요청은 연결된 클라이언트로 자동 라우팅되지 않습니다.


Traefik, Caddy, NGINX 같은 reverse proxy 앞단에 Proxer를 둘 때는 원래 Host 헤더를 보존해야 합니다. Traefik에서는 보통 passHostHeader를 켜둔 기본 동작을 유지하면 됩니다.

그다음 Proxer에 어떤 프록시 주소의 forwarded 헤더를 신뢰할지 알려줍니다.

proxer server \
--listen 0.0.0.0:8080 \
--domain proxy.example.com \
--trusted-proxy loopback \
--trusted-proxy private

환경변수는 comma-separated 형식입니다.

PROXER_TRUSTED_PROXIES=loopback,private,10.42.0.0/16 proxer server --domain proxy.example.com

신뢰 프록시는 X-Forwarded-For, X-Real-IP, X-Forwarded-Host, X-Forwarded-Proto를 제공할 수 있습니다. 신뢰하지 않는 peer의 forwarded 헤더는 라우팅 판단에 사용하지 않습니다.


모든 Proxer 내부 엔드포인트는 /__proxer__/ 아래에 있습니다.

/__proxer__/control
/__proxer__/health/live
/__proxer__/health/ready

이 경로를 로컬 앱으로 라우팅하지 마세요. 공개 서버가 직접 처리합니다.