[Jenkins] 역방향 프록시 설정이 잘못되었습니다.
2025. 3. 22. 16:08ㆍTrouble 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
반응형
'Trouble Shootings > Infrastructure' 카테고리의 다른 글
[Docker] Image 중첩을 통해, 빌드 시간 단축하기 (0) | 2025.03.30 |
---|---|
[Jenkins, Docker] docker.sock: connect: permission denied (0) | 2025.03.18 |
[Jenkins] ERROR: Error fetching remote repo 'origin' (권한 문제) (0) | 2025.03.18 |
[Nginx] 413 Error: Request Entity Too Large (0) | 2025.02.16 |