1.nginx上必须先配置 fastcgi_intercept_errors on后再配置error_page 500 502 503 504 /50x.html;error_page 404 /404.html;自定义报错页面才会生效。
2.如果自定义报错的页面丢失或不存在,会默认调用nginx内部默认的报错页面。例如:
3.如果想要改动nginx内部默认的报错页面,需要修改在linux环境下nginx/src/html/下的.c文件(不建议修改);windows下无法修改,已经打包成.exe文件。
4. 与框架(laravel)配合使用有时死循环跳转的假像。例如当你的发生了500错误时候,启用fastcgi_intercept_errors on后,如自定义的error_page文件丢失,例如上面定义的50x.html不存在。
nginx会尝试再次调用请求且不携带请求参数。如继续不存在,则会返回内部默认的报错页面。在nginx尝试调用请求的时候,如果你代码内部加入自定义验证,例如laravel的控制器里面的validate方法。
因为没有携带请求参数,出现验证不通过。laravel的处理机制(具体可以看下laravel源码)会调用redirect()->to,
则有可能出现死循环假象,一直 redirect。
原文:http://www.cnblogs.com/JackDeng/p/6428189.html