最近在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就可正常看到歡迎頁面了。