DevOps/nginx

nginx를 사용해서 점검페이지를 띄워보자

bandal-gom 2019. 9. 29. 22:23

nginx 에서 간단하게 503 에러코드를 사용하여 점검페이지를 띄워보자!

서비스 점검 공지

서비스 점검 공지 페이지가 사용되는 경우가 종종 있습니다.

  • 장애
  • 무중단이 불가능한 빅 업데이트
    주로 위와 같은 사유로 점검페이지를 사용합니다.

Nginx 를 L4 뒤, application 앞에 두는 구조이기 때문에 점검 페이지를 nginx 쪽에서 관리하고 있습니다.
실제 점검 페이지는 html 파일로, 마크업/디자인 팀에서 전달받은 파일을 nginx 서버에 업로드 하여 사용합니다.

nginx 설정

nginx에서 점검 페이지를 관리하려면 conf 파일에 수정을 해야합니다.
http status code 503 을 사용하여 에러 페이지로 redirect 하도록 다음과 같이 설정.

server {
    ...
    location / {
        error_page 503 /maintenance_on.html;
        if (-f [서비스경로]/maintenance_on.html) {
            return 503;
        }
        ...
    }
    # Error pages.  
    location = /maintenance_on.html {
        root [서비스경로];
    }
    ...
}
  • 점검 페이지가 사용되지 않을때는 maintenance_off.html 로 파일명을 유지.
  • 점검페이지를 띄우는 스크립트 (maintenance.py) 가 maintenance_on.html 로 점검페이지 파일명 변경.
  • maintenance_on.html 파일이 존재하는 경우 503 error code 를 반환.
  • 503 error code를 maintenance_on.html 로 매핑.
  • 요청이 /maintenance_on.html 로 들어오는 경우, 지정된 경로의 파일로 요청 redirect.

점검페이지 ON/OFF 스크립트

해당 설정을 빠르게 하기위해서 간단한 스크립트를 사용하였습니다.
사용 방법은 다음과 같습니다.

python3 maintenance.py [서비스명] [on or off]

 

반응형