解决nginx配置个性化404界面却依然显示默认的404页面的问题

zsanjin 发布于 2023-05-01 153 次阅读


404测试链接

 

有一次无意输入了错误的链接,发现默认的404界面实在太难看简陋了,就想自己换一个,但我查阅了大量的资料,并且和chatGPT进行了大量的对话,所有查阅到关于nginx跳转404界面的配置资料基本都是和我写的一样,并且保证了nginx的权限和文件权限都是给到位了,但无论我怎么改都无法让系统读取到我配置的404页面,经过摸索排查,最后解决了,鉴于谷歌百度bing等主流搜索引擎都没有写出此类问题的解决方式,我提一个放出来以便后人用之。按着配置说明,我在nginx.conf下输入了以下参数:

跳转404的nginx配置:

error_page   404  /404.html;
     location = /404.html 
    {
     root html;
     internal;
     }

意思就是若触发404错误界面就跳转到网页根目录下的404.html,并且外部不能直接访问404界面

 

这应该是比较准确,逻辑和指令都没问题的参数,但是很奇怪的是为什么设定了个性化的404页面却依然跳转到默认的界面? 最后还是我一点一点去改动配置文件,找出可能导致如此的奇异参数,最后当我删去网页重定向,也就是http的地址定向到https的网页设置参数:

http转https网页重定向,如:

server 
   {
      listen       80;
      server_name  www.zsanjin.de;
      rewrite ^(.*) https://$server_name$1 permanent;
   }

http的server块中删除了这个,结果就发现就能自动跳转跳转到个性化的404页面了,本以为设置了网页重定向,就只要在http的块里面添加跳转404页面参数就行,但是还得在https的块中添加跳转404页面参数,就很奇怪,原因不明

https块中增加跳转参数,如:

server 
   {
      listen       443 ssl;
      server_name  www.zsanjin.de;
      error_page   404  /404.html;

location = /404.html {
      root html;
      internal;}
    }

总结:如果你使用了重定向参数后依然无法跳转404页面,也请在https的设置块中添加跳转参数

感谢请我吃辣条
感谢请我吃泡面
感谢请我喝奶茶