错误
第一次探索nginx
,执行以下命令时:
nginx -s reload
报出错误:
nginx: [error] invalid PID number "" in ...
*此时忽略掉了warn警告信息
排查
Step 1
baidu搜索了一众文章,大都是说执行:
nginx -c /etc/nginx/nginx.conf
*地址改成自己的(如,win10下,F:install ginx-1.16.1logs ginx.conf)
参考例:
- nginx: [error] invalid PID number "" in ...
- Nginx报错:nginx: [error] invalid PID number "" in "/run/nginx.pid" 解决方法
而执行之后并没有解决
Step 2
执行 nginx -t
查看测试结果
发现 80 端口被占用的问题:
我们都知道,windows 10 上的 IIS 默认站点的默认端口即 80,
而我将它改为了 808,所以,
此时 80 端口占用问题,应该跟 IIS 没有关系。
Step 3
找到该问题一致的文章:
Nginx 错误10013: An attempt was made to access a socket in a way forbidden
方案是:
- 找到占用该端口(80)的 PID(进程ID),
- 在任务管理器中找到这个 PID 的进程,kill终止它
但是,不同的是,
netstat -aon | findstr ":80"
查找到的 80 端口占用 PID 为 4,
任务管理器中PID=4
的进程为System
,
也就是说,不能终止进程,方案行不通。
*并不是一个可以终止的进程,右键终止是不可用的状态
解决
最终解决是因为找到了【泡泡虾】的文章:
80端口被system占用解决过程
虽然该作者并不是在使用 nginx 的时候遇到的问题,
但本质和解决方法是一样的。
即:
开始菜单 -> services.msc
-> 找到SQL Server Reporting Services`服务 -> 停止掉
- Service名:
ReportServer
- 显示名:
SQL Server Reporting Services (MSSQLSERVER)
此时,再检查一下端口情况 netstat -aon | findstr ":80"
:
已经没有 80 端口了。
执行nginx -t
测试结果也通过了(successful)
但是,nginx -s reload
还是一开始的错误,并没有解决。
再次启动nginx
:
start nginx.exe
OK~