nginx 显示自定义错误页面,分为2种方案,比较推荐方案2

 

方案1是错误以后跳转到别处,例如我在七牛云oss上直接丢一个html,发生任何错误就跳转过去

  1. server {
  2.    listen       80;
  3.    server_name  www.xxx.com;
  4.    location / {
  5.        ...............
  6.    }
  7.    error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 504 505 506 = http://cdn.xxx.com/cat.html;
  8. }

 

比较推荐方案2,本地放一个静态html给nginx返回,这样可以代替nginx原本错误代码

  1. server {
  2.    listen       80;
  3.    server_name  www.xxx.com;
  4.    location / {
  5.        ...............
  6.    }
  7.    error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 504 505 506 /cat.html;
  8.    location = /cat.html {
  9.       # 这里具体是指 错误页 cat.html的所在位置全路径 加起来就是狐疑了/cat.html
  10.       root /root/errorPage;
  11.     }
  12. }

注意了,这里其实存在一个隐藏的坑

网上的方案2的教程 都是这样写的,然后我就怎么调用怎么报错,反反复复 403 forbidden

最后发现nginx配置文件顶部有一行user nginx; 改成user root;

  1. user nginx;
  2. # 改成
  3. user root;
  4.  
  5. # 万一再不行就给所在文件夹加权限
  6. chmod -777 /root/errorPage