
我剛剛在 Mac OS X 10.11 (El Capitan) 上設定了 Homebrew 的 Nginx。
如果我像這樣設定我的 Ngnix 配置:
listen 127.0.0.1:8080;
listen 127.0.0.1:81;
listen 127.0.0.1:75;
它會起作用的。但如果我把它放在那裡:
listen 127.0.0.1:80;
不會的。如果我去的話我會被拒絕連接http://127.0.0.1
ps
說 Nginx 正在運行,但netstat -a | grep nginx
或者netstat -a | grep 80
說它沒有運行。
當然,以 root 身份運行它(並不是說我需要它來運行:8080
Mac OS X 防火牆未運作。
錯誤日誌不再顯示此內容:
2015/10/10 17:16:19 [emerg] 23906#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
有任何想法嗎?我可以在 上運行它8080
(奇怪的是,當我在 上運行時8080
,它會打開80
連接埠並將其重定向到80
)。
答案1
重新啟動 OSX。工作了。我認為如果使用linux,情況會有所不同。
答案2
錯誤如下:
2015/10/10 17:16:19 [emerg] 23906#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
「位址已使用」說明了一切:您系統上的其他東西正在使用連接埠 80。檢查這一點的方法是lsof
在您的系統上像這樣運行:
sudo lsof -i -P | grep -i "80"
這將嚴格顯示哪些進程可能正在使用連接埠 80。
sudo lsof -i -P
如果您只想檢查連接埠 80 是否正在使用,您可以使用該lsof
命令的這種變體,該命令允許檢查這些內容,而無需使用以下命令過濾輸出grep
:
sudo lsof -nPL -iTCP:80
答案3
在基於 Unix 的系統上,例如 MacOS,如果沒有超級使用者權限,則無法在低於 1024 的連接埠上執行服務。但是當你重新啟動電腦時,nginx服務會以超級用戶自動重新啟動,因此它可以工作。
以下命令應該可以解決該問題:
sudo brew services restart nginx
答案4
我解決了這個問題(我有一個帶有 M1 晶片的 MacBook Air):
- 刪除 httpd(如果有)
- 禁用阿帕契關聯
- 安裝nginx
- 將連接埠更改為 80
/usr/local/etc/nginx/nginx.conf