解决宝塔Nginx霸占 80/443 端口!

1、确定Nginx所加载的配置文件

安装后Nginx后,在终端执行 nginx -t 查看其加载的配置文件

nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /www/server/nginx/conf/nginx.conf test is successful

接着我们去查看配置文件

发现该配置文件引入了以下目录的文件:
include /www/server/panel/vhost/nginx/*.conf
进入该目录可以发现包含好多文件

其中我们需要更改的有两个文件:
0.default.conf
phpfpm_status.conf

2、更改Nginx配置文件

(1)0.default.conf

其中第一个0.default.conf是默认占用80和443端口的配置文件,当请求匹配不到已经设置的vhost后,会默认进入此配置文件(可以看到指定了一个目录/www/server/nginx/html,该目录下就存放着“找不到站点”的html文件。

将0.default.conf中的80和443端口换掉即可

(2)phpfpm_status.conf

第二个文件phpfpm_status.conf是宝塔面板用于查询nginx和php-fpm的负载状态的(在此强烈建议宝塔团队将此端口换成内部定义端口)
将其中的80端口更改掉即可

都更改完之后,原始占用的80和443端口便彻底释放,可交由其他Web服务自由使用。
你以为这样就完了吗?

3、更改宝塔面板配置文件

前面我们提到第二个文件phpfpm_status.conf是宝塔面板用于查询nginx和php-fpm的负载状态的,改掉之后不出意外的话,会出现以下情况,无法获取Nginx的负载状态:

虽然可能八辈子不看这个页面,但是对于有强迫症的人来说这样是相当的不爽。经过查找资料,发现Nginx负载状态的获取是由宝塔面板前端发起的一个ajax POST请求

最终在宝塔代码类文件中发现一个名为ajax的py脚本,里面刚好就是有关代码,给请求的网址添加上刚刚自定义的端口。
脚本位置:/www/server/panel/class/ajax.py

保存后重启宝塔面板,访问nginx负载页,可以正常加载出负载状态。

值得一提的是,改动端口后会影响两个地方,nginx和PHP两个负载信息。但发现 PHP负载信息似乎并没有受到影响,经查看该部分信息获取是通过一个内部方法request_php(),尚不清楚其内部运作原理。

上一篇 使用宝塔面板安装WordPress,打造自己的个人博客
下一篇 手把手教你用雷池WAF给网站加一道防火墙
目录