问题起因
问题出在服务器环境搭建完成之后,开始部署项目,等项目完成部署,配置好nginx配置文件域名后,开始访问项目,却发现项目首页返回404。
排查过程
1、第一步:nginx配置错误??
单凭返回404,第一反应肯定是nginx配置项目路径错了,于是开始排查项目路径在哪里写错了。
查来查去,看着本地和服务器上一样的配置路径,本地可以正常访问,服务器却不行。
陷入了沉思,这nginx配置,没毛病啊,毕竟服务器配置是 ctrl+c、ctrl+v来的啊,既然本地配置没问题,服务器这么配肯定也是可以的。
2、第二步:php无法正常访问??
既然项目首页访问404,那咱们试试访问别的PHP文件呢。
说干就干,在项目同级目录下创建了别的PHP文件,一访问,可以正常输出。
那就是nginx配置确实没有毛病,肯定是配置好了的。
3、第三步:上网搜索
开始网上各种查找,找来找去也没遇见过我这种情况,既然找不到,觉得这肯定是小概率事件了,肯定是哪块出错了。
既然在本地可以正常访问,服务器却不行,肯定是哪块配置不一样,服务器有多加什么配置,才导致这样的情况。
在网上查找过程中,在众多的网页中看到nginx中有一个配置
在了解到该配置的信息后,觉得就是这个配置造成的了
在nginx中fastcgi_intercept_errors 和 error_page 会组合使用。
用来给客户端返回自定义的错误页面,如果俩者未组合使用,那么功能是失效的。
4、第四步:确认(已经80%确认是该原因造成的)
服务器和本地 nginx 配置有添加:
error_page 500 502 503 504 /50x.html;
本地没有配置过 fastcgi_intercept_errors,服务器配置该项目的conf文件中也未有该配置。
5、答案呼之欲出
既然项目的conf文件没有,那还有默认的 nginx.conf配置文件。
果然,在nginx.conf文件中静静的躺着
fastcgi_intercept_errors on;
至此,内心拨云见日,大彻大悟!!
解决办法
在nginx配置文件中 “注释” or “删除 ” 俩者
# fastcgi_intercept_errors on;
#error_page 500 502 503 504 /50x.html;
重启nginx!!!
再次访问项目域名, 5XX。
既然项目可以访问了,5XX这也叫事,轻松加愉悦的解决。