Nginx使用try_files返回500错误的解决方案

  记录(shui)一下自己在建站过程中踩的一个坑,也给大家一个参考:

  有一天在自己的博客随便乱点的时候,突然冒出来一个500 Internal Server Error.
HTTP-500错误
我寻思这可是静态博客,怎么可能出现500错误呢?
想起前几天改过Nginx的配置,于是赶紧去查对应的文件.

  将网站的配置回滚之后,再次访问网址出现404错误:
网址返回404
所以去翻了一下web目录,发现由于刚建站没多久,对应的文件确实没来得及写(lll¬ω¬)

  此时问题就变成了哪个修改导致404错误变成了500错误?
  继续排查上次对配置文件的修改,注意到了这个更改:当时为了把博客文章的.html后缀省略(强迫症看着实在难受>﹏<),使用了Nginx的try_files命令:

    location / {
        try_files $uri $uri.html $uri/index.html;
    }

  谷歌搜索后发现try_files在找不到对应文件时会返回500错误;
所以一般要在最后面加上=404,强制把返回的错误码改为404:

    ...
    try_files xxx xxx =404;
    ...

一些小提示
  Nginx隐藏.html.php后缀的配置:

    try_files $uri $url.php $uri/index.php $uri/index.html $uri.html $uri.htm =404;

最后,欢迎小伙伴们来我の博客玩!

posted @ 2022-07-29 22:39  o冰雪殇璃陌梦o  阅读(1278)  评论(0编辑  收藏  举报