云服务器

遇到了“80端口被占用”的问题,该如何解决?

2020-07-23 10:13:57 112

80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,一般Web服务器默认配置都是80端口,所以你访问网站时,前缀-http://和端口- :80都是被浏览器隐藏掉的。

某次,我在自己电脑上搭建wnmp,遇到了“80端口被占用”的问题,所以我就想了解一下这是怎么回事。

D:\Program Files\nginx-1.18.0>nginx.exe -q
nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)

 

 

这是什么问题?

1.我用了管理员启动,确认肯定不是权限问题。

2.端口被占用了吗?但我没运行其他web进程。

我决定检查一下,打开cmd,检查监听端口。

 C:\Users\Think>netstat -ano
活动连接  协议  本地地址          外部地址        状态           PID  
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4


 

介绍一下上述命令:

命令格式:netstat [options]

-a表示显示所有活动的TCP连接以及计算机监听的TCP和UDP端口。

-n表示只以数字形式显示所有活动的TCP连接的地址和端口号。

-o表示显示活动的TCP连接并包括每个连接的进程ID(PID)。

 

打开Windows任务管理器,查看详细信息。

 


这是什么进程?

系统的80端口是被W3SVC(万维网发布服务,World Wide Web Publishing Service)占用了,它是系统提供http服务的依赖项。哪些服务使用了这个端口呢?

1.World Wide Web:发布服务;

2.SSDP Discovery:局域网共享所需服务;

3.Print Spooler:打印机交互服务;

貌似这个w3svc服务在办公场景还是有一定作用的。

 

 

怎么处理呢?

1.暴力的方法

此方法就是直接不使用这个服务,操作很简单。

C:\Users\Think>net stop http
下面的服务依赖于 HTTP Service 服务。
停止 HTTP Service 服务也会停止这些服务。
   World Wide Web 发布服务
   SSDP Discovery
   Print Spooler你想继续此操作吗? (Y/N) [N]: y
World Wide Web 发布服务 服务正在停止.
World Wide Web 发布服务 服务已成功停止。
SSDP Discovery 服务正在停止.
SSDP Discovery 服务已成功停止。
Print Spooler 服务正在停止.
Print Spooler 服务已成功停止。
HTTP Service 服务已成功停止。

 

然后禁止服务。

C:\Users\Think>sc config http start= disabled
[SC] ChangeServiceConfig 成功

这样80端口就释放了。

 

2.迂回方法

如果要用打印机或者共享文件夹的功能, 就能使用此方法,先修改w3svc的监听端口。
 

C:\Users\Think>netsh http add iplisten ipaddress=::
成功添加 IP 地址

 

关闭并开启服务

 C:\Users\Think>net stop http /y
下面的服务依赖于 HTTP Service 服务。
World Wide Web 发布服务 服务正在停止.
World Wide Web 发布服务 服务已成功停止。
D:\Program Files\nginx-1.18.0>net start http
HTTP Service 服务已经启动成功。

监听端口变了, 而且其他服务都能运行起来。

 

3.佛系的方法

如果系统要占用端口,那就让它继续占用,我们也可以改用其他端口。

修改nginx.conf

server {
        listen
       8080;
        server_name  localhost;
        ... 
}

 

然后启动nginx,这样就可以完成了。

 D:\Program Files\nginx-1.18.0>nginx
 C:\Users\Think>netstat -ano
活动连接
  协议  本地地址          外部地址        状态           PID
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       30192
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       27272


 

小结

       在这次排障过程中,个人觉得windows自动开80端口是不负责的行为,会给用户带来某些风险,所以不使用时建议将其关掉。同时该操作与linux的原理大同小异,所以操作起来并不复杂。

睿江云官网链接:www.eflycloud.com

上一篇: 无

微信关注

获取更多技术咨询