问题描述
80端口永远是被占用的状态,不管关闭所有网站和docker都无效
问题解决
大部分被占用的原因都是nginx
。
最后定位到问题是/www/server/panel/vhost/nginx/
目录中的0.default.conf
文件里面占用了80端口
把这个80改成别的9527或者其他的空闲端口,重载nginx:sudo systemctl reload nginx
,问题解决!!!
诊断方法
80端口被占用,而且尝试访问时出现404错误,通常意味着Nginx正在监听该端口,但未能找到与请求的路径相匹配的任何内容。可以使用netstat
或lsof
系统管理工具,找出哪个程序占用了80端口。
- 使用
netstat
命令:
打开终端,然后输入以下命令:
这将列出所有监听80端口的进程。netstat -tulnp | grep ':80'
-tulnp
选项的意思是:-t
:仅显示TCP连接-u
:仅显示UDP连接-l
:仅显示正在监听的socket-n
:显示数字地址和端口(而不是名字)-p
:显示进程ID和程序名称
查找LISTEN
状态且本地地址为0.0.0.0:80
或:80
的行,然后查看PID/PROGRAM
列以确定哪个进程正在监听该端口。
- 使用
lsof
命令:
如果netstat
没有提供足够的信息,可以使用lsof
命令:lsof -i :80
列出所有打开文件,包括网络套接字。
如果确定是Nginx占用了端口,首先从目录/www/server/panel/vhost/nginx/
检查conf文件,查看是不是有文件使用了80端口,如果有占用,把他改成别的端口:
测试nginx 配置文件,重新加载Nginx:
sudo nginx -t # 测试配置文件是否正确
sudo systemctl reload nginx # 重新加载Nginx配置
重新访问80端口的网址,成功访问到正确的服务: