(ubuntu) nginx: [emerg] bind() pour 0.0.0.0:80 échoué (13: permission denied)
j'ai besoin d'aide pour trouver la cause profonde de cette erreur de permission refusée. De quelles permissions nginx a-t-il besoin? Pourquoi est-il si compliqué?
5 réponses
l'API de socket lie () à un port inférieur à 1024, tel que 80 comme votre titre mentionné, ont besoin d'un accès root.
ici est "lient aux ports de moins de 1024 sans accès root"
et une autre façon plus facile est d'exécuter Nginx comme root.
si vous utilisez un port plus grand que 1024 et le privilège root, alors encore obtenir ce problème, qui peut causer par SELinux
:
Vérifier ce port, dire 8024, dans segange port
sudo semanage port -l | grep http_port_t
si la liste des ports n ° 8024, alors ajoutez - la dans le port de segange
sudo semanage port -a -t http_port_t -p tcp 8024
mise à jour en 2017.12.22
parfois votre SELinux est disabled
, vous devez enforcing
d'abord. Vérifier L'état de SELinux par
$ sestatus
D'autres étapes peuvent être lues ce merveilleux article: https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-1-basic-concepts
Si vous voyez ce msg après l'exécution de "nginx -t", vous n'avez pas la premission exécuter 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) inside circus (process manager ) ajoute sudo avant l'exécutable nginx, le mien ressemble à ceci:
[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 finalement ajouter une ligne dans le fichier /etc/sudoers ( mon utilisateur est prod). Cette ligne évite les erreurs (sudo: pas d'ATS présent et pas de programme askpass spécifié). Probablement besoin de redémarrer la session (redémarrage). Profiter.
prod ALL = NOPASSWD: /usr/sbin/nginx
nginx a besoin d'un accès root. veuillez utiliser
sudo nginx
prochaine étape le long de avec votre mot de passe