1. error_page语法

语法:

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

默认值:

no

使用字段:

http, server, location, location 中的if字段

2. 实例

nginx指令error_page的作用是当发生错误的时候能够显示一个预定义的uri,比如:

error_page 502 503 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

这样实际上产生了一个内部跳转(internal redirect),当访问出现502、503的时候就能返回50x.html中的内容,这里需要注意是否可以找到50x.html页面,所以加了个location保证找到你自定义的50x页面。

同时我们也可以自己定义这种情况下的返回状态吗,比如:

error_page 502 503 =200 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

这样用户访问产生502 、503的时候给用户的返回状态是200,内容是50x.html。

当error_page后面跟的不是一个静态的内容的话,比如是由proxyed server或者FastCGI/uwsgi/SCGI server处理的话,server返回的状态(200, 302, 401 或者 404)也能返回给用户。

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,然后在里边做对应的处理。

error_page 500 502 503 504 @jump_to_error;
location @jump_to_error {
proxy_pass http://backend;
}

同时也能够通过使客户端进行302、301等重定向的方式处理错误页面,默认状态码为302。

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状态码,且可正常显示自定义内容)。

最新文章

  1. jquery限制文本框只能输入金额
  2. C#微信json结构接收参数 转载
  3. [算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]
  4. Android横竖屏切换继续播放视频
  5. Tfs服务器迁移(更改IP)后客户端(vs2013)配置方法
  6. jenkins mac slave 设置
  7. sequence使用
  8. (转)QT常用快捷键
  9. 【类似N^N做法的斐波那契数列】【HDU1568】 Fibonacci
  10. Mac OS X下Maven的安装与配置
  11. C# 初步学习
  12. JavaScript语言精粹-读书笔记
  13. Mybatis高级查询之一对一查询的四种方法
  14. MySQL数据备份方法
  15. SuperSocket基础二
  16. VUE组件的学习
  17. hdu1255扫描线计算覆盖两次面积
  18. 使用shell脚本批处理控制大数据环境服务启动停止
  19. libpcap 库使用(三)
  20. Start transaction not working with Revit 2014

热门文章

  1. 树的直径的求法即相关证明【树形DP || DFS】
  2. Spring多个版本源码地址分享
  3. SignalR集成Autofac
  4. Docker 常用指令
  5. jsp的4个作用域区别( pageScope、requestScope、sessionScope、applicationScope)
  6. C#添加二维码带加密带logo
  7. Git-SSH
  8. iOS之UIKeyboardType 11种键盘图片展示
  9. tablib模块
  10. 转载:EJB到底是什么