作为网站服务提供者,占用80端口情有可原,但有时候80端口要用来干其他事情(下期预告pihole)
寻找被占用的80端口
安装好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
其中第一个 0.default.conf是默认占用80端口文件,当请求匹配不到已经设置的vhost后,会默认进入此配置文件
可以看到指定了一个目录,该目录下就存放着‘找不到站点’的 html文件。将其80端口换掉即可
listen 80;
listen [::]:80;
***
root /www/server/nginx/html;
第二个文件 phpfpm_status.conf是宝塔面板用于查询nginx和php-fpm负载状态的,很遗憾他们使用了 80端口。
在此强烈建议宝塔团队将此端口换成内部定义端口
listen 80;
***
location /nginx_status {
***
}
...
将该文件的 80端口改掉即可,至此 80端口解除占用(如果你的vhost没有使用80端口的话)
你以为这就完了吗?
修改宝塔面板
前面提到,第二个文件是宝塔面板用来读取软件的负载信息的,如果我们直接改掉,那当然就可以看到下面的画面
信息获取失败
虽然可能八辈子不看这个页面,但是这个错误却让我相当的不爽。经过查找,该信息的获取是由宝塔面板前端发起的一个 ajax POST请求
ajax请求
最终在宝塔代码类文件中发现一个名为ajax的 py脚本,里面刚好就是有关代码。给请求的网址添加上自定义的端口,保存。
修改自定义端口
重启宝塔面板,访问 nginx负载页,信息变为正常
重启面板后
值得一提的是,改动端口后会影响俩个地方,nginx 和 PHP 俩个负载信息。但发现 PHP负载信息似乎并没有受到影响,经查看该部分信息获取是通过一个内部方法request_php(),尚不清楚内部运作原理
转载请注明 Saopanda和简书链接