서버 운영
Nginx 301 리다이렉트 적용 전 체크리스트
301 리다이렉트를 설정하면 SEO에 영향을 준다. 실수 없이 하려면 사전 체크가 필수다.
서버 운영 중 도메인을 변경하거나 URL 구조를 바꿀 때 301 리다이렉트를 써야 한다. 하지만 실수하면 SEO 순위를 잃거나 무한 루프에 빠질 수 있다.
1단계: 현재 상태 기록하기
Nginx 설정을 바꾸기 전에 현재 상태를 정확히 기록한다.
# 현재 설정 백업
sudo cp /etc/nginx/sites-available/example.conf /etc/nginx/sites-available/example.conf.bak.$(date +%Y%m%d)
# 현재 응답 상태 확인
curl -I https://old-domain.com
curl -I https://new-domain.com
# DNS 설정 확인
dig old-domain.com
dig new-domain.com
2단계: 301 리다이렉트 설정 추가
# /etc/nginx/sites-available/example.conf
# 구 도메인에서 신 도메인으로
server {
listen 80;
listen 443 ssl http2;
server_name old-domain.com www.old-domain.com;
ssl_certificate /etc/letsencrypt/live/old-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/old-domain.com/privkey.pem;
# 모든 요청을 새 도메인으로
return 301 https://new-domain.com$request_uri;
}
# 신 도메인 설정
server {
listen 80;
listen 443 ssl http2;
server_name new-domain.com www.new-domain.com;
# 실제 애플리케이션
location / {
proxy_pass http://localhost:3000;
}
}
3단계: Nginx 설정 검증
# 문법 확인
sudo nginx -t
# 성공 메시지: "syntax is ok"
4단계: 실제 적용 전 테스트
# hosts 파일에 임시로 추가 (Mac/Linux)
sudo echo "203.0.113.10 old-domain.com" >> /etc/hosts
# 리다이렉트 테스트
curl -I https://old-domain.com
# HTTP/1.1 301 Moved Permanently
# Location: https://new-domain.com/
# 무한 루프 확인
curl -L https://old-domain.com
# 끝나지 않으면 설정에 문제가 있음
5단계: 현재 세션의 모든 연결 확인
# 현재 연결된 클라이언트 확인
sudo lsof -i :80
sudo lsof -i :443
# 기다릴 필요가 있다면 구간을 정해서 배포
6단계: 설정 적용
# Nginx 재로드 (기존 연결은 끊지 않음)
sudo systemctl reload nginx
# 또는
sudo nginx -s reload
7단계: 실제 리다이렉트 동작 확인
# 리다이렉트 따라가기
curl -L -I https://old-domain.com
# curl에서 최종 응답 상태 확인
curl -w "\nFinal Status: %{http_code}\n" -L https://old-domain.com
8단계: 캐시 및 CDN 확인
# 응답 헤더에서 캐시 확인
curl -I https://old-domain.com
# 중요한 헤더들:
# Cache-Control: 캐시 정책
# X-Cache: CDN 캐시 상태 (HIT/MISS)
# Age: 캐시 된 시간(초)
9단계: SEO 검색엔진에 알리기
# Google Search Console에서 변경사항 제출
# robots.txt 업데이트
# /robots.txt
User-agent: *
Disallow: /admin/
Sitemap: https://new-domain.com/sitemap.xml
# sitemap.xml도 새 도메인으로 업데이트
10단계: 모니터링
# 다음 날에 로그 확인
sudo tail -f /var/log/nginx/access.log
# 300번대 상태 코드 확인 (리다이렉트)
grep "30[0-9]" /var/log/nginx/access.log | wc -l
# 404 에러 확인
grep "404" /var/log/nginx/access.log | wc -l
주의사항
# 잘못된 설정: 무한 루프
server {
server_name old-domain.com;
return 301 https://old-domain.com/new-path; # 같은 도메인!
}
# 올바른 설정
server {
server_name old-domain.com;
return 301 https://new-domain.com$request_uri;
}
301 리다이렉트는 한 번 설정하면 브라우저 캐시에 남는다. 실수하면 수정하는 데 시간이 오래 걸리므로 신중하게 진행해야 한다.