[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM