본문 바로가기
서버인프라/엔진엑스

Nginx 503 처리방법

by techwold ted 2023. 3. 13.

오늘은 nginx 에서 503 error에 대한 처리 방법에 대해 알아 보겠습니다.

 

HTTP 503 오류는 일반적으로 다음과 같은 상황에서 발생합니다.

  1. 서버 부하가 많을 때
  2. 유지 보수를 위한 서버 다운 시간일 때
  3. 서버 장애 발생 시

저는 오늘 유지보수를 위한 서버 다운 시간을 가정하에 내용을 작성하고자 합니다.

[ config 해설 ]

1. geo 모듈에 $dev_ip 변수를를 설정하여 myipaddress부분에 자신의 아이피를 설정 합니다.

2. if 문에 $dev_ip 를 비교 조건으로 하여 1설정 되어 있으면,  break 로 빠저나가 location / { } 블록을 만나게 합니다.

   1로 설정해야 할 ip는 개발자나, 엔지니어 사이트 관리자의 IP가 될 것입니다.

3. if (-f) 는 위 조건에 해당하지 않을 시 /data/maintenance/fun-errorpages/errorpages/50x.html 파일이 있을 시에만 true가 되며, 서버 점검시 해당 파일을 생성하고 점검이 끝나면 지우거나 다른 파일명으로 변경합니다.

그리고, true 일때 return 값을 503으로 발생십니다.

4. error_page 지시어를 통해 에러처리를 하며, @maintenance로 리다이렉션 시켜줍니다.

5. location @maintenance{} 를 통해 return 시켜줍니다.

 

main.conf

geo $dev_ip {
        default 0;
        myipaddress 1;
}

server {
        listen 80;
        server_name empathize.com www.empathize.com;

        access_log /var/log/nginx/v-access.log;
        error_log /var/log/nginx/v-error.log;


        if ($dev_ip = 1) {
                break;
        }
        if (-f /data/maintenance/fun-errorpages/errorpages/50x.html) {
                return 503;
        }

        error_page 503 @maintenance;


        location @maintenance {
                return http://mc.empathize.com;
        }


        location / {
                root /data/maintenance/ted;
                index index.html index.htm;


                try_files $uri $uri/ /index.html;
        }
}

 

두번째 파일은 maintenance페이지를 출력하기 위한 설정입니다.

해당 파일에서 deny all 부분은 점검이 끝난 후 주석을 제거 하면 됩니다. 그렇게 되면 해당 페이지 접근이 되지 않을 것입니다.

maintenance.conf

server {
        listen 80;
        server_name mc.empathize.com;

        access_log /var/log/nginx/mc-access.log;
        error_log /var/log/nginx/mc-error.log;

        #deny all;
        
        location / {
                root /data/maintenance/fun-errorpages/errorpages;
                index index.html index.htm 50x.html;


                try_files $uri $uri/ /50x.html;
        }
}

 

혹시 잘 되지 않으신 분들이 계시면 도와드리겠습니다.

'서버인프라 > 엔진엑스' 카테고리의 다른 글

Nginx location 구분  (2) 2023.03.14
NGINX more_set_headers를 설치  (2) 2022.11.30
[GeoIP 모듈] Nginx Geo IP 모듈 설치  (2) 2022.11.17
사설 ssl인증서 적용  (0) 2022.10.17
[ 제5강 캐싱 ] NGINX 콘텐츠 캐싱  (0) 2021.01.22

댓글