[Jenkins] 역방향 프록시 설정이 잘못되었습니다.

2025. 3. 22. 16:08Trouble Shootings/Infrastructure

 

1. 문제 상황

 

Nginx에서 `HTTPS`를 적용했는데, Jenkins 설정에 들어가보니 위와 같이 "역방향 프록시 설정이 잘못된 것으로 파악되었습니다."란 문구가 떴습니다. Nginx 설정 파일에서는 HTTP 요청이 들어오면 HTTPS로 리디렉션하도록 설정 되어있는데요.

# HTTP를 HTTPS로 리디렉션
server {
    listen 80;
    server_name [my-domain];

    # 모든 HTTP 요청을 HTTPS로 리디렉션
    return 301 https://$host$request_uri;
}

 

이는 Jenkins URL이 `http`로 설정되어 있기 때문입니다. 실제 사용자 트래픽은 `https://`로 리디렉션이 일어났지만, Jenkins 자체는 자신의 URL이 `http//`로 설정되어 있기 때문에 모든 내부 링크와 리소스 경로를 HTTP를 사용하여 생성합니다. 이와 같은 불일치 때문에 위에서 저런 경고를 보내는 것이죠.

 

이는 다음과 같은 문제를 야기할 수도 있습니다.

  • 혼합 콘텐츠 경고: 브라우저가 HTTPS 페이지에서 HTTP 리소스를 로드하려고 할 때, 보안 경고를 표시
  • 쿠키 문제: 보안 쿠키가 HTTP 연결에서 전송되지 않을 수 있음
  • 리디렉션 루프: Jenkins가 HTTP URL로 리디렉션하면, Nginx가 다시 HTTPS로 리디렉션 하는 무한 루프가 발생할 수 있음 (물론 이 경우는 거의 없겠지만)

 

2. 해결

Jenkins URL을 `HTTPS`로 변경해줍니다.

 

또한, 역방향 프록시(Reverse Proxy) 과정에서 헤더 정보가 손실되지 않도록 Nginx 설정에서 다음 정보도 세팅해줍니다.

  • `X-Forwarded-Proto`: 원래 요청이 사용한 프로토콜(HTTP 또는 HTTPS)을 나타냅니다.
  • `X-Forwarded-Host`: 원래 요청의 호스트 이름을 나타냅니다.
  • `X-Forwarded-For`: 클라이언트의 원래 IP 주소를 나타냅니다.
  • `X-Jenkins-Context-Path`: Jenkins에게 자신이 어떤 경로 아래에서 서비스되고 있는지 알려줍니다.

 

 

 

728x90
반응형