J'ai besoin d'aide pour déterminer la cause première de cette erreur d'autorisation refusée. Quelles sont les autorisations nécessaires à nginx? Pourquoi est-ce si compliqué?
l'API de socket bind () vers un port inférieur à 1024, tel que 80 comme votre titre mentionné, nécessite un accès root.
here " Lié aux ports de moins de 1024 sans accès root "
et un autre moyen plus simple consiste à exécuter nginx en tant que root.
Si vous utilisez un port supérieur à 1024 et un privilège root, vous obtenez toujours ce problème, ce qui peut entraîner SELinux
:
Vérifiez ce port, disons 8024, dans le port segange
Sudo semanage port -l | grep http_port_t
Si le port ne contient pas la liste 8024, ajoutez-le au port segange
Sudo semanage port -a -t http_port_t -p tcp 8024
Parfois, votre SELinux est disabled
, vous devez le enforcing
en premier. Vérifiez le statut de SELinux par
$ sestatus
Plus d'étapes peuvent lire cet article merveilleux: https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-1-basic-concepts
Si vous voyez ce message après l'exécution de "nginx -t", vous ne disposez pas de l'autorisation d'exécution en tant que root "Sudo nginx -t"
La meilleure solution serait:
1) ajouter un utilisateur à sudoers (mon utilisateur est prod)
usermod -aG Sudo prod
2) Dans Circus (gestionnaire de processus), ajoutez Sudo avant l’exécutable nginx.
[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) et enfin ajouter une ligne dans le fichier/etc/sudoers (mon utilisateur est prod). Cette ligne évite les erreurs (Sudo: aucun tty présent et aucun programme askpass spécifié). Probablement besoin de redémarrer la session (redémarrage). Prendre plaisir.
prod ALL = NOPASSWD: /usr/sbin/nginx
nginx a besoin d'un accès root. veuillez utiliser
Sudo nginx
prochaine étape avec votre mot de passe