콘텐츠로 이동

리버스 프록시

tinyauth는 기본적으로 리버스 프록시 뒤에서 운영되도록 설계됐어요. 클라이언트의 실제 IP 주소와 프로토콜을 올바르게 식별하기 위해 server.trust_proxy를 설정해야 해요.

config.yaml
server:
trust_proxy: true
  • server.trust_proxy: 리버스 프록시 헤더를 신뢰할지 여부를 설정해요. 기본값은 false예요.
    • true: 모든 프록시 헤더를 신뢰해요. 완전히 신뢰할 수 있는 네트워크에서만 사용하세요.
    • false: 프록시 헤더를 신뢰하지 않아요.
    • '127.0.0.1': 지정된 IP 주소의 프록시만 신뢰해요.
    • 1 또는 2: 지정된 홉 수만큼의 프록시를 신뢰해요.

Nginx를 리버스 프록시로 사용하는 경우의 설정 예시예요.

프로덕션 환경에서는 server.trust_proxy에 프록시의 IP 주소를 직접 지정하는 것을 권장해요.

config.yaml
server:
# Nginx가 같은 호스트에서 실행되는 경우
trust_proxy: '127.0.0.1'
/etc/nginx/conf.d/tinyauth.conf
server {
listen 443 ssl;
server_name auth.example.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://127.0.0.1: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;
}
}

Caddy를 리버스 프록시로 사용하는 경우의 설정 예시예요. Caddy는 자동으로 HTTPS 인증서를 발급하고 X-Forwarded-* 헤더를 설정해 줘요.

Docker 네트워크에서 Caddy가 실행되는 경우, Caddy 컨테이너의 IP 대역을 지정해요.

config.yaml
server:
# Docker 브릿지 네트워크 대역
trust_proxy: '172.18.0.0/16'
# Caddyfile
auth.example.com {
reverse_proxy localhost:8080
}