この許可拒否エラーの根本原因を突き止めるのに助けが必要です。 nginxにはどのような権限が必要ですか?なぜそんなに複雑なのですか?
記載されているタイトルの80など、1024未満のポートへのソケットAPI bind()には、rootアクセスが必要です。
ここに「 ルートアクセスなしで1024未満のポートにバインド
もう1つの簡単な方法は、nginxをルートとして実行することです。
1024より大きなポートとルート権限を使用している場合でも、この問題が発生します。これはSELinux
が原因である可能性があります。
このポート、たとえば8024をsegangeポートで確認します
Sudo semanage port -l | grep http_port_t
ポートリストに8024がない場合は、それをsegangeポートに追加します
Sudo semanage port -a -t http_port_t -p tcp 8024
SELinuxがdisabled
である場合、最初にenforcing
する必要があります。 SELinuxのステータスを確認するには
$ sestatus
次の素晴らしい記事を読むことができます: https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-1-basic-concepts
「nginx -t」の実行後にこのメッセージが表示される場合、ルート「Sudo nginx -t」として実行する権限がありません。
最適なソリューションは次のとおりです。
1)sudoersにユーザーを追加します(私のユーザーはprodです)
usermod -aG Sudo prod
2)サーカス(プロセスマネージャー)内で、nginx実行可能ファイルの前にSudoを追加します。
[watcher:nginx]
cmd = Sudo /usr/sbin/nginx
args = -c /home/t/Projects/x_b_11/etc/nginx.conf -p /home/t/Projects/x_b_11
3)最後に、ファイル/ etc/sudoersに行を追加します(私のユーザーはprodです)。この行はエラーを回避します(Sudo:ttyが存在せず、askpassプログラムが指定されていません)。おそらくセッションを再起動する必要があります(再起動)。楽しい。
prod ALL = NOPASSWD: /usr/sbin/nginx
nginxにはルートアクセスが必要です。使ってください
Sudo nginx
パスワードとともに次のステップ