1. error_page语法
语法:php
error_page code [ code... ] [ = | =answer-code ] uri | @named_location
默认值:html
no
使用字段:nginx
http, server, location, location 中的if字段
2. 实例
nginx指令error_page的做用是当发生错误的时候可以显示一个预约义的uri,好比:spa
error_page 502 503 /50x.html; location = /50x.html { root /usr/share/nginx/html; }
这样实际上产生了一个内部跳转(internal redirect),当访问出现50二、503的时候就能返回50x.html中的内容,这里须要注意是否能够找到50x.html页面,因此加了个location保证找到你自定义的50x页面。code
同时咱们也能够本身定义这种状况下的返回状态吗,好比:server
error_page 502 503 =200 /50x.html; location = /50x.html { root /usr/share/nginx/html; }
这样用户访问产生502 、503的时候给用户的返回状态是200,内容是50x.html。htm
当error_page后面跟的不是一个静态的内容的话,好比是由proxyed server或者FastCGI/uwsgi/SCGI server处理的话,server返回的状态(200, 302, 401 或者 404)也能返回给用户。ip
error_page 404 = /404.php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
也能够设置一个named location,而后在里边作对应的处理。io
error_page 500 502 503 504 @jump_to_error; location @jump_to_error { proxy_pass http://backend; }
同时也可以经过使客户端进行30二、301等重定向的方式处理错误页面,默认状态码为302。ast
error_page 403 http://example.com/forbidden.html; error_page 404 =301 http://example.com/notfound.html;
同时error_page在一次请求中只能响应一次,对应的nginx有另一个配置能够控制这个选项:recursive_error_pages
默认为false,做用是控制error_page可否在一次请求中触发屡次。
2. Nginx 自定义404错误页面配置中有无等号的区别
- error_page 404 /404.html 可显示自定义404页面内容,正常返回404状态码。
- error_page 404 = /404.html 可显示自定义404页面内容,但返回200状态码。
- error_page 404 /404.php 若是是动态404错误页面,包含 header 代码(例如301跳转),将没法正常执行。正常返回404代码。
- error_page 404 = /404.php 若是是动态404错误页面,包含 header 代码(例如301跳转),加等号配置能够正常执行,返回php中定义的状态码。但若是php中定义返回404状态码,404状态码能够正常返回,但没法显示自定义页面内容(出现系统默认404页面),这种状况能够考虑用410代码替代( header("HTTP/1.1 410 Gone"); 正常返回410状态码,且可正常显示自定义内容)。