리버스 프록시
tinyauth를 리버스 프록시 뒤에서 운영하는 방법
tinyauth는 기본적으로 리버스 프록시 뒤에서 운영되도록 설계됐어요. 클라이언트의 실제 IP 주소와 프로토콜을 올바르게 식별하기 위해 server.trust_proxy를 설정해야 해요.
# config.yaml
server:
trust_proxy: true
server.trust_proxy: 리버스 프록시 헤더를 신뢰할지 여부를 설정해요. 기본값은false예요.true: 모든 프록시 헤더를 신뢰해요. 완전히 신뢰할 수 있는 네트워크에서만 사용하세요.false: 프록시 헤더를 신뢰하지 않아요.'127.0.0.1': 지정된 IP 주소의 프록시만 신뢰해요.1또는2: 지정된 홉 수만큼의 프록시를 신뢰해요.
Caution
server.trust_proxy를 올바르게 구성하지 않으면 IP 스푸핑 취약점이 발생할 수 있어요. 프로덕션 환경에서는 true 대신 구체적인 프록시 IP 주소 범위를 지정하는 것을 권장해요.
예시
Nginx
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를 리버스 프록시로 사용하는 경우의 설정 예시예요. 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
}