목차
오류 메시지 표시를 완료하려면 위치의 @match를 사용하세요.
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.html
location /error
error_page 404 /error/404.html;
error_page 403 /error/403.html;
location /error {
alias /var/www/html;
}