Nginx error_page 모듈 해석

목차

error_page의 개념

사용 예

지정된 페이지로 이동

지정된 URL로 이동

오류 메시지 표시를 완료하려면 위치의 @match를 사용하세요.

​피드백 상태 코드 변경  

error_page 구성 팁

실제 응용 해석

전류 제한 적용

오류 코드에 해당하는 파일 찾기


error_page의 개념

error_page는 서버 오류 페이지를 사용자 정의하는 데 사용되는 nginx의 중요한 명령입니다. nginx에서 404, 403, 500 등의 내부 오류가 발생하면 기본적으로 nginx에서 제공하는 오류 페이지로 이동합니다. 그러나 기본 오류 페이지는 error_page 지시문을 사용하여 수정할 수 있으며 점프 URL이나 파일 경로를 지정할 수 있습니다.

문법:

error_page code [ code... ] [ = | =answer-code ] uri | @named_location 

기본값:

no 

 필드 사용: http, 서버, 위치, 위치의 필드인 경우 

사용 예

지정된 페이지로 이동

에러 코드에 응답한 후 지정된 경로로 이동한 후 지정된 경로로 처리하는 것이 원칙이며, 에러 코드가 404인 경우 http://localhost:80/50x에 접속하는 것과 같습니다. 처리를 위해 내부적으로 위치 = /50x.html로 전송되는 html(페이지 50x.html이 존재해야 함)

        error_page 404 403 500 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/html;
        }

지정된 URL로 이동

에러코드 302(일시적으로 대상 URL로 리다이렉트)에 응답한 후, 에러코드가 404일 경우 리다이렉션을 하는 것을 원칙으로 합니다.https://www.csdn.net

       error_page 404 403 500 https://www.csdn.net;

오류 메시지 표시를 완료하려면 위치의 @match를 사용하세요.

server{
	error_page 404 @jump_to_error;
	location @jump_to_error {
		default_type text/plain;
		return 404 'Not Found Page...';
	}
}

​피드백 상태 코드 변경  

원래 404 파일을 찾을 수 없음 오류가 발생했지만 nginx는 상태 코드를 200으로 변경하여 사용자에게 반환할 수 있습니다(아래 예). 

        error_page 404 =200 /50x.html;#注意这里的缩进不是随便的
        location = /50x.html {
                root /usr/share/nginx/html;
        }

error_page 구성 팁

error_page 설정 시  추가 = 와 추가 안함  의 차이 에 주의하세요  = . 추가한다는  = 것은 응답이 지정된 것임을 의미합니다  http status code . 기본값은 200입니다. 추가하지 않음은  = 원래 오류의 상태 코드를 의미합니다~

# 这样可以访问错误页面时 http status 为 404 ,并且页面内容是 404.html 的内容
error_page 404 /404.html
error_page 404 500 /404.html;

# 这样配置访问错误页面时 http status 为 200 ,但页面内容是 404.html 的内容
error_page 404 500 = /404.html;

# 这样配置访问错误页面时 http status 为 404 ,但页面内容是 404.html 的内容
error_page 404 500 =404 /404.html;

# 也可以把404请求直接301到某个域上
error_page 404 =301 https://xuexb.com/404;

이러한 방식으로 200 이외의 상태 코드가 브라우저에 의해 가로채질 수 있으므로 필요에 따라 지정된 상태 코드로 오류 페이지를 구성할 수 있습니다.

  • error_page 404 /404.html은 사용자 정의된 404 페이지 콘텐츠를 표시하고 404 상태 코드를 정상적으로 반환할 수 있습니다.
  • error_page 404 = /404.html은 사용자 정의 404 페이지 콘텐츠를 표시할 수 있지만 기본 상태 코드 200을 반환합니다.
  • error_page 404 /404.php 동적 404 오류 페이지이고 헤더 코드(예: 301 점프)가 포함된 경우 정상적으로 실행되지 않습니다. 일반적으로 404 코드를 반환합니다.
  • error_page 404 = /404.php 헤더 코드(예: 301 점프)를 포함하는 동적 404 오류 페이지인 경우 등호가 포함된 구성이 정상적으로 실행될 수 있으며 PHP에 정의된 상태 코드가 반환됩니다. 다만, PHP에서 404 상태 코드를 반환하도록 정의한 경우, 404 상태 코드는 정상적으로 반환할 수 있으나 사용자 정의 페이지 내용을 표시할 수 없습니다(시스템 기본 404 페이지가 나타남). 대신 410 코드(헤더("HTTP/1.1 410 Gone "), 일반적으로 410 상태 코드를 반환하고 사용자 정의 콘텐츠를 정상적으로 표시할 수 있음).

실제 응용 해석

전류 제한 적용

nginx 구성에 제한_req 트래픽 제한이 설정되어 있으므로 많은 요청이 503 오류 코드를 반환합니다. 현재 제한 조건에서는 사용자 경험을 개선하기 위해 일반 코드 200을 반환하고 빈번한 작업에 대한 정보를 반환하기를 희망합니다.

location  /test {
  ... 
  limit_req zone=zone_ip_rm burst=1 nodelay; 
  error_page 503 =200 /dealwith_503?callback=$arg_callback;
}
location /dealwith_503{ 
  set $ret_body '{"code": "V00006","msg": "操作太频繁了,请坐下来喝杯茶。"}';
   if ( $arg_callback != "" ) 
   { 
       return 200 'try{$arg_callback($ret_body)}catch(e){}'; 
   } 
   return 200 $ret_body; 
}

오류 코드에 해당하는 파일 찾기

error_page 다음에 오는 내용은 해당 액세스가 캡처 되는 /error/404.html것과 동일합니다 .http://localhost:80/error/404.htmllocation /error

        error_page 404 /error/404.html;
        error_page 403 /error/403.html;
        location /error {
                alias /var/www/html;
        }

Guess you like

Origin blog.csdn.net/m0_62436868/article/details/133157123