Nginx故障分析与排查
我建立了一个网站,并且文件不以 .conf
的格式存放在 conf.d
文件夹。而是存放在了 sites-available
这个文件夹,之后软链接到了 sites-enabled
。
而之后的修改,只需要修改 sites-available
里面的配置文件就好了。软链接命令:
ln -s /etc/nginx/sites-available/xxx /etc/nginx/sites-enabled/xxx
nginx -t
也显示语法正常。万事俱备,启动也正常。
但是访问就出问题了,倒没有显示502,404之类的,也没有跳欢迎页,就是一直跳下载文件(磁盘图标),而且我已经正常配置了 php-fpm.sock
了。真让人摸不着头脑。
在经历一个多小时的排查后,发现只要把 sites-available
下面的配置文件,后缀 .conf
去掉就行了(没错,就是没有后缀就行了)。
我被 nginx.conf
这个文件误导了。这个Nginx的默认配置文件下的第58行下面,有两行规则。分别是:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
可以看到,*代表存入怎么样都行。但是*只能接受无后缀,如果你使用 .conf
的格式存入 sites-available
后,软链接到 sites-enabled
,事实上是不起作用的。
如果你希望用 .conf
的话,只需要在 conf.d
文件夹创建一个关于网站的 .conf
文件来写配置就行了。但是这是不严谨的,不方便我们启动/停止网站的访问。
(如果希望停止网站的访问,只需要删除软链接到 sites-enabled
的文件即可。)
指定配置文件运行
==如果你打算排查错误,或者指定配置文件运行==
可以试试命令:
nginx -c /etc/nginx/xxxx.conf
来指定一个配置文件。
最后,无论如何,记得 nginx -s reload
哦
(插一嘴)正常访问假象
替换默认的html文件夹(Nginx欢迎页面)。
用上/index.php
,访问正常是个假象。
当你尝试:
try_files, rewrite , return 302/200 "xxx";
就会发现配置文件没有生效,从而怀疑人生。
所以,为什么不试试 conf.d
目录,或者删除 .conf
这个后缀呢?