[Nginx] Nginx 啟動失敗

最近在Windows上架設Nginx,遇到了一直無法啟用的錯誤。

網路上方法很多種,我只記錄了我有嘗試的及最後對我來說有效的方式。

【作業環境】
作業系統:Windows Server 2012
Nginx:nginx/Windows-1.23.3

【查找問題】
1. 啟動Nginx後閃一下就不見了,使用瀏覽器也無法看到Nginx歡迎頁面。

2. 查看Nginx資料夾內的log看到以下錯誤訊息。

2023/03/24 06:21:31 [emerg] 6124#6128: 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)

【問題處理】
1. 該問題是因為目前Server的80 Port已被占用造成,所以必須先找到是誰佔用了80 Port,使用以下指令查找占用的程序。

netstat -aon|findstr "80"

2. 可以看到占用的程序PID為4

3. 原則上要釋放占用80 Port最快方法是把該程序停止,所以要先查看PID 4究竟是誰。

tasklist /fi "PID eq 4"

4. 可以看到是「System」占用了80 Port,但在查找資料過程中發現這個「System」可能會代表不同的程式,可以嘗試以下方式執行完後再次執行Nginx。

  • 先試試以下指令 (這個指令筆者執行完出現失敗)
NET stop HTTP
  • 於服務中停止World Wide Web Publishing服務(停用這個會導致IIS無法起來,所以如要使用IIS確定問題非此問題後可重新啟用)
  • 於服務中停止SQL Server Reporting Services

5. 最後筆者是因為Server上的「SQL Server Reporting Services」佔用了80 Port,所以停用後重啟Nginx就可正常看到歡迎頁面了。