经验分享 · 2023年3月3日

windows 下本地调试80端口被占用的解决思路

今天在启动本地Nginx环境进行调试的时候提示端口被占用,我的操作系统是Windows 11,并没有安装IIS,Nginx是PhpStudy环境内置的,从任务管理器看Nginx并没有启动,到底是哪个进程占用了80端口呢?

用管理员权限打开命令提示符(DOS窗口), 输入命令 netstat -abno ,果然发现有个进程正在监听80端口,但是“无法获取所有权信息”,看不到是哪个exe打开的。但我们可以看到PID 为4。

netstat命令窗口

打开任务管理器,在名称、状态等表格标头处点右键,勾选PID,从中看到PID为4的进程是System。难道中木马了?

想到还有一个网络配置命令行工具netsh,于是搜索了一下,得到以下指令:

netsh http show servicestate

我们来看执行结果:

由于窗口内容过多,图片没有抓全,最下面显示了进程信息。看到里面的REPORTSERVER了吗?原来是SQL Server的这个组件占用了80端口。在服务管理器里将“SQLServer Reporting Services” 服务停止,启动方式设为手动。

重新启动Nginx,问题得以解决。