GX博客

分享个人 Full-Stack JavaScript 项目开发经验

nginx: [emerg] bind() to 0.0.0.0:80 failed

如果你使用 nginx 在 Windows 下开发,有时候会碰到 80 端口被占用的问题。本文介绍一些处理端口冲突的方法。


当我们使用 nginx 作为反向代理,start nginx 后打开浏览器发现我们的站点无法访问,我们可以执行 nginx 的测试命令查看原因:

nginx -t

当显示如下错误时,证明我们要监听的 80 端口被其它应用程序或服务占用了:

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)

一般地,可以以管理员身份运行 cmd 命令,通过以下命令列出正在侦听每个 TCP 端口的进程的 PID 和名称:

netstat -ano -b

确认占用进程后,根据 PID 使用以下命令可终止进程:

taskkill /f /pid pid_number_you_want_to_kill

要查看 TCP 和 UDP 端点的详细列表也可使用微软官方工具:TCPView

但是对于以 SYSTEM 权限运行的进程,并不能以上面方式终止。这时可以通过浏览器访问 http://localhost 查看哪项服务使用了 80 端口。按下 F12,选择 Network,刷新页面,在响应头中查看 Server,可能如下:

Server: Microsoft-HTTPAPI/2.0

这时候我们只需要 win + R 打开运行,输入 services.msc,找到 SQL Server Reporting Services (MSSQLSERVER),右键暂时停止该项服务即可。

版权声明:

本文为博主原创文章,若需转载,须注明出处,添加原文链接。

https://leeguangxing.cn/blog_post_55.html