语 法:error_page code ... [=[response]] uri;
默认值:—
上下文:http, server, location, if in location
定义针对指定错误显示的 URI,URI 的值可以包含变量。例如:
error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
这会导致内部重定向到指定的 uri,客户端请求方法更改为“GET”(对于“GET”和“HEAD”以外的所有方法)。
此外,可以使用 “=response” 语法将响应代码更改为另一个,例如:
error_page 404 =200 /empty.gif;
如果错误响应由代理服务器或 FastCGI/uwsgi/SCGI/gRPC 服务器处理,并且服务器可能返回不同的响应代码(例如,200、302、401 或 404),则可以使用它的代码进行响应返回:
error_page 404 = /404.php;
如果在内部重定向期间不需要更改 URI 和方法,则可以将错误处理传递到命名 location:
location / { error_page 404 = @fallback; } location @fallback { proxy_pass http://backend; }
如果 uri 处理导致错误,则将上次发生错误的状态码返回给客户端。
也可以使用 URL 重定向进行错误处理:
error_page 403 http://example.com/forbidden.html; error_page 404 =301 http://example.com/notfound.html;
在这种情况下,默认情况下,响应代码 302 会返回给客户端。它只能更改为重定向状态代码之一(301、302、303、307 和 308)。
代码 307 直到版本 1.1.16 和 1.0.13 才被视为重定向。
代码 308 直到版本 1.13.0 才被视为重定向。
当且仅当当前级别上没有定义 error_page 指令时,这些指令才从先前的配置级别继承。