Featured image of post Nginx页面跳下载文件(磁盘图标)

Nginx页面跳下载文件(磁盘图标)

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 这个后缀呢?

Built with Hugo
Theme Stack designed by Jimmy