서버 운영
리버스 프록시(Nginx) 운영 중 확인 순서
운영 중 Nginx나 도메인 설정 문제가 생겼을 때 체계적으로 확인하는 방법입니다.
리버스 프록시(Nginx)가 정상 작동하지 않으면 요청이 제대로 백엔드까지 전달되지 않거나 응답이 캐시되어 버린다. 운영 중에 트래픽 경로 문제를 빠르게 진단하려면 확인 순서를 정해두는 게 좋다.
사용자가 보는 모습
사용자 입장에서 어떤 증상이 나는지 파악한다. 페이지가 안 뜨는지 느린지 이전 버전이 보이는지에 따라 원인이 다르다.
개발자가 보는 신호
로그를 확인해서 실제 문제가 뭔지 찾는다.
dig example.com
curl -I https://example.com
sudo nginx -t
- dig: DNS 레코드가 제대로 설정되었는지 확인
- curl -I: HTTP 응답 헤더와 상태 코드 확인
- nginx -t: Nginx 설정 문법이 올바른지 확인
캐시 설정 확인
Nginx의 캐시 설정이 너무 길거나 잘못되면 이전 버전의 응답이 계속 반환된다.
# 응답 헤더에서 캐시 정보 확인
curl -I https://example.com | grep -i 'cache-control\|expires\|etag'
Cache-Control의 max-age 값이 너무 크지 않은지 확인한다.
프록시 규칙 확인
Nginx 설정에서 upstream 서버 주소가 맞는지, proxy_pass 경로가 올바른지 확인한다.
# Nginx 설정 파일 확인
sudo cat /etc/nginx/sites-enabled/default
백엔드 서버의 IP나 포트가 변경되었으면 설정을 업데이트해야 한다.
환경 차이 확인
로컬 개발 환경과 운영 서버의 Nginx 버전, 플러그인, 설정이 다를 수 있다.
nginx -v
sudo nginx -V
수정 전 고정할 값
Nginx 설정을 수정하기 전에 현재 상태를 기록해둔다. 롤백할 때 필요하다.
sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.bak.$(date +%Y%m%d)
캐시 확인과 검증 루틴
- 설정 문법 확인:
sudo nginx -t - 설정 리로드:
sudo systemctl reload nginx - 응답 확인:
curl -I https://example.com - 로그 확인:
sudo tail -f /var/log/nginx/access.log
Nginx를 restart하기 전에 설정 문법을 먼저 확인해야 문법 에러로 서비스가 중단되는 걸 피할 수 있다.
운영 메모
Nginx 설정을 수정할 때마다:
- 수정 전 상태 백업
- 설정 문법 검증
- 리로드 후 응답 확인
- 이상 없으면 기록에 남기기
이 순서를 따르면 다음에 비슷한 문제가 생겨도 빠르게 대응할 수 있다.