錯誤
第一次探索nginx
,執行以下命令時:
nginx -s reload
報出錯誤:
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)
參考例:
- 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~