30장 reverse proxy·context path·forwarded header를 한 흐름으로 검증한다
외부 사용자는 Nginx의 /releaseportal을 보지만 Tomcat은 내부 HTTP와 다른 host·port를 볼 수 있다. 이 차이를 잘못 처리하면 HTTPS redirect loop, 잘못된 절대 URL, secure cookie 누락, SSO callback 불일치가 생긴다.
location /releaseportal/ {
proxy_pass http://releaseportal_pool/releaseportal/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
이 예시를 그대로 복사하기 전에 현재 Nginx 버전, trailing slash, context, 신뢰할 proxy 범위를 확인한다. 애플리케이션이나 Tomcat의 RemoteIpValve가 forwarded header를 신뢰한다면 임의 클라이언트가 직접 주입하지 못하도록 신뢰 프록시를 제한한다. 외부 URL, 내부 URL, health URL, SSO callback, cookie path를 표로 고정한다.
실습 30 외부 경로 smoke
내부 Tomcat health가 UP인 상태에서 외부 경로 404, redirect loop, 잘못된 cookie path 세 실패를 주입한다. 승격 판단은 내부 health가 아니라 실제 SNI·host·context를 통과한 외부 smoke까지 기다려야 한다.