分享个人 Full-Stack JavaScript 项目开发经验
如果你使用 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),右键暂时停止该项服务即可。