[nginx报错问题]reload时报错:nginx: [error] invalid PID number "" in ...

错误

第一次探索nginx,执行以下命令时:

nginx -s reload

报出错误:
nginx-reload-error

nginx: [error] invalid PID number "" in ...

*此时忽略掉了warn警告信息

排查

Step 1

baidu搜索了一众文章,大都是说执行:

nginx -c /etc/nginx/nginx.conf

*地址改成自己的(如,win10下,F:\install\nginx-1.16.1\logs\nginx.conf)

参考例:

而执行之后并没有解决


Step 2

执行 nginx -t 查看测试结果

发现 80 端口被占用的问题:
nginx-t-error

我们都知道,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-test-ok


但是,nginx -s reload还是一开始的错误,并没有解决。

再次启动nginx:

start nginx.exe

OK~

nginx-reload-ok

猜你喜欢

转载自www.cnblogs.com/CoderMonkie/p/nginx-reload-error.html