這幾天在設定nginx的conf,想讓網址listen不同的port,原本想說只要conf配置好,firewall開放端口就好,但重啟nginx卻出現

nginx: [emerg] bind() to 0.0.0.0:8089 failed (13: Permission denied)

nginx permission denied 13

這個錯誤訊息,很明顯是在說權限不足,通常會有這問題幾乎是selinux造成的,以下是解決辦法

查詢目前開放的http port

semanage port -l | grep http_port_t

一般會顯示 80,81,443,488,8009,8443,9000 這幾個port

開放的http port

設定新的http port

我們假設要listen 8089 這個port 那我們可以執行以下指令

semanage port -a -t http_port_t  -p tcp 8089

接著下來在設定防火牆開放(看有沒有要對外)

firewall-cmd --zone=public --add-port=8089/tcp --permanent 

firewall-cmd --reload

這邊要注意一點,那就是 semanage port 要先執行,假如先執行firewall 的話,會出現下面這個訊息,無法添加成功

ValueError: Port tcp/8089 already defined



文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/nginx-bind-permission-denied