[NGINX] 프록시 헤더 설정 (도메인에 포트가 빠지는 증상)

2025. 8. 28. 09:47·Linux
728x90

배경

https://t-admin.test.com:21000/information/file/helo 경로에서 게시판을 등록한 후 원래는 뒤로가기 로직으로 돌아가야 하는데, 실제로는 뒤로 가지 않고 도메인에서 포트가 빠져버리는 증상이 발생했다.


분석

브라우저 개발자 도구의 Network 탭 → Initiator 항목을 확인하면 어떤 체인으로 페이지가 이동했는지 알 수 있다.

소스 코드 분석 결과, 게시판 등록 후 서버에서 반환하는 Location 값이 /information/file/helo (상대 경로)였다.

상대 경로라면 브라우저는 현재 요청의 Host + Port를 기준으로 URL을 만들어야 한다.

하지만, 리버스 프록시(Nginx) 설정에서 백엔드로 넘겨주는 Host 헤더에 포트가 포함되지 않으면, 애플리케이션이 절대 URL을 생성할 때 포트를 모른다. 이 경우 브라우저는 https://도메인/… 형태로 (기본 포트 443) 접근하게 되고, 그 결과 포트가 빠진 URL로 리다이렉트가 발생한다.

즉, 포트를 사용하는 도메인 환경에서만 발생하는 문제이며, 기본 포트(80/443) 환경에서는 경험할 수 없는 증상이다.

이 문제는 Nginx proxy 헤더 설정으로 해결 가능하다.


권장 사항

location / {
    proxy_pass <http://10.100.11.105:12000>;

    # Host 헤더를 포트까지 포함하도록 변경
    proxy_set_header Host              $host:$server_port;

    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;

    # 추가: 앱이 Forwarded 헤더를 참고할 경우 대비
    proxy_set_header X-Forwarded-Host  $host:$server_port;
    proxy_set_header X-Forwarded-Port  $server_port;
}

1. proxy_set_header Host $host:$server_port;

  • 실제 HTTP 요청 헤더 Host:를 오버라이드.
  • 브라우저가 보낸 Host 대신 Nginx가 upstream에 전달하는 값.
  • 대부분의 웹 프레임워크/애플리케이션은 절대 URL 생성 시 Host 헤더를 기준으로 삼음.
  • → 포트를 포함하지 않으면 기본 포트(443)로 간주되어 잘못된 리다이렉트 발생.

2. proxy_set_header X-Forwarded-Host $host:$server_port;

  • 클라이언트가 요청한 Host(+포트)를 프록시가 따로 전달.
  • 일부 프레임워크는 Host: 대신 X-Forwarded-Host를 읽어 리다이렉트용 URL을 생성.
  • 예: Spring Boot → server.forward-headers-strategy=native 옵션을 켜야 사용.

3. proxy_set_header X-Forwarded-Port $server_port;

  • 요청이 들어온 실제 포트를 전달.
  • Django, Spring, Rails 등 일부 프레임워크는 이 값을 참고하여 절대 URL 생성 시 반영.

✅ 핵심: 혹시 모르니 Host 헤더에 포트까지 넣자.

728x90

'Linux' 카테고리의 다른 글

HTTPS 인증 오류 트러블슈팅: 불특정 다수에게 발생한 SSL 인증서 문제 해결기  (0) 2025.10.14
bash_profile, bashrc 차이점  (1) 2025.05.14
All available gssapi mechanisms failed 에러가 나는 이유  (0) 2025.04.16
pam_tally2 실패 횟수 자동 증가 증상  (0) 2025.04.16
SFTP 특정 디렉토리만 접근 가능하도록 하는 방법 (sftp chroot)  (2) 2024.10.29
'Linux' 카테고리의 다른 글
  • HTTPS 인증 오류 트러블슈팅: 불특정 다수에게 발생한 SSL 인증서 문제 해결기
  • bash_profile, bashrc 차이점
  • All available gssapi mechanisms failed 에러가 나는 이유
  • pam_tally2 실패 횟수 자동 증가 증상
정주원
정주원
개인블로그
  • 정주원
    Joon.eng
    정주원
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • Linux (43)
      • Windows (0)
      • Network (5)
      • Database (0)
      • Cloud (23)
      • Docker (3)
      • Ansible (2)
      • Language (1)
      • Etc (5)
  • 블로그 메뉴

    • 링크

      • GITLAB(woni)
    • 공지사항

    • 인기 글

    • hELLO· Designed By정상우.v4.10.0
    정주원
    [NGINX] 프록시 헤더 설정 (도메인에 포트가 빠지는 증상)
    상단으로

    티스토리툴바