← 전체 글로 돌아가기

서버 운영

서버에서만 301 리다이렉트가 안 먹힐 때

Nginx나 도메인 설정에서 301 리다이렉트가 정상 작동하지 않을 때의 진단과 해결 방법.

로컬에서는 괜찮았던 리다이렉트 규칙이 배포 후 작동 안 할 때가 있다. 특히 도메인 마이그레이션이나 URL 정규화를 위해 301 리다이렉트를 설정했는데 먹지 않는 경우다. 이런 상황에서 체계적으로 확인하는 방법을 정리했다.

인프라 레벨 확인

먼저 DNS와 프록시가 정상 작동하는지 확인한다.

dig example.com
curl -I https://example.com

dig 명령으로 DNS 응답을 확인하고, curl -I로 HTTP 응답 헤더를 본다. 만약 응답이 리다이렉트(3xx)가 아니라면 서버 차원에서 설정되지 않은 것이다.

Nginx 설정 확인

리다이렉트는 보통 Nginx 설정에서 return 또는 rewrite 지시어로 처리된다.

sudo nginx -t

Nginx 설정 파일의 문법이 정확한지 확인한다. 만약 문법 오류가 있으면 Nginx가 시작되지 않거나 설정이 무시된다.

sudo systemctl status nginx

Nginx가 실제로 실행 중인지, 최근에 설정이 리로드되었는지 확인한다.

리다이렉트 규칙 검증

실제로 어떤 응답이 오는지 상세히 확인한다.

curl -I https://old-domain.com
  • 301이 반환되는가
  • Location 헤더가 올바른 주소를 가리키는가
  • HTTPS에서 HTTP로 리다이렉트되지는 않는가

흔한 실수

  • DNS CNAME이 잘못 설정되어 요청이 서버에 도달하지 않음
  • SSL 인증서가 없어서 HTTPS 요청이 실패
  • 캐시 레이어(CDN)가 오래된 응답을 캐싱 중
  • 리다이렉트 체인이 너무 김 (예: old → middle → new)

최종 확인

  1. 새로운 URL로 최종 도착하는지 확인
  2. 로그에서 요청이 제대로 프로세싱되는지 확인
  3. 만약 캐시가 있다면 무효화(purge) 실행

리다이렉트는 보통 무음 처리되기 쉬우니, 배포 직후에 반드시 실제로 작동하는지 테스트해야 한다.