← 전체 글로 돌아가기

서버 운영

리버스 프록시(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)

캐시 확인과 검증 루틴

  1. 설정 문법 확인: sudo nginx -t
  2. 설정 리로드: sudo systemctl reload nginx
  3. 응답 확인: curl -I https://example.com
  4. 로그 확인: sudo tail -f /var/log/nginx/access.log

Nginx를 restart하기 전에 설정 문법을 먼저 확인해야 문법 에러로 서비스가 중단되는 걸 피할 수 있다.

운영 메모

Nginx 설정을 수정할 때마다:

  1. 수정 전 상태 백업
  2. 설정 문법 검증
  3. 리로드 후 응답 확인
  4. 이상 없으면 기록에 남기기

이 순서를 따르면 다음에 비슷한 문제가 생겨도 빠르게 대응할 수 있다.