Nginx의 유지 관리 페이지, 모범 사례


13

유지 관리 페이지가있을 때 서버가 표시되도록 구성하고 싶습니다. 이 코드를 시도하고 작동합니다.

location / {
    try_files /maintenance.html $uri $uri/ @codeigniter;
}

그러나 200 상태 코드와 함께 제공되며 검색 엔진에 혼란을 줄 수 있습니다. 모범 사례는 503 상태 코드를 반환하는 것입니다. 구글에 내가 좋아하는 그것에 대해 몇 가지 관련 페이지 발견 . 그러나 그들은 리디렉션을 위해 if를 사용하고 nginx 문서에 따르면 ifs를 사용하는 것은 안전하지 않습니다.

if를 사용하지 않고 수행하는 방법이 있습니까? 이 경우 안전한가요?

감사.

답변:


7

모범 사례는 500 상태 코드를 반환하는 것입니다.

500 대신 503을 의미한다고 생각합니다.

그들은 if리디렉션 을 사용 하고 nginx 문서에 따르면 ifs를 사용하는 것은 안전하지 않습니다.

번호 만 return입니다 100 % 안전 내부 iflocation상황.

nginx 문서 에 따르면 HTTP 상태 코드를 마지막 인수로 지정할 수 있습니다 try_files. 나는 이것을 시도했지만 작동하지 않았다.


21

여기 내가하는 일이 있습니다.

            if (-f $document_root/maintenance.html) {
                    return 503;
            }
            error_page 503 @maintenance;
            location @maintenance {
                    rewrite ^(.*)$ /maintenance.html break;
            }

파일이 있으면 유지 관리 페이지가 표시됩니다. 파일을 제거하면 정상으로 돌아갑니다.


1
예, 그것은 질문의 링크에있는 동일한 코드입니다. 실제로 if는이 문서를 사용해서는 안되기 때문에이 경우 s 를 사용하는 것이 안전한지 묻습니다 .
NeDark

1
동일한 문서 : In some cases it's also possible to move ifs to server level (where it's safe as only other rewrite module directives are allowed within it).Mike가 보여준 유지 보수 error_page는 일반적으로 서버 {} 컨텍스트에서 설정됩니다.
Regan

1
파일의 존재를 확인하지 않고 'return 503'을 수행 한 것을 제외하고는 동일한 작업을 수행했습니다. 그렇게하면 심볼릭 링크를 통해 사이트를 활성화 / 비활성화 할 수 있습니다 (데비안의 "사이트 사용 가능"/ "사이트 사용 가능"레이아웃 사용).
Asfand Qazi

1
NGINX는 모든 요청에 ​​대해 파일의 존재 여부를 확인해야합니다.
Marc

1
Marc, 일반적으로 액세스되는 파일은 메모리에있는 파일 시스템 캐시에 저장되지 않기 때문입니다.
Mike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.