Ich brauche Hilfe, um die Ursache für diesen Fehler zu ermitteln. Welche Berechtigungen benötigt nginx? Warum ist es so kompliziert?
die Socket-API bind () an einen Port unter 1024, z. B. 80, wie in Ihrem Titel angegeben, benötigt Root-Zugriff.
hier ist " Bindet an Ports mit weniger als 1024 ohne Root-Zugriff "
und eine andere einfachere Möglichkeit ist, nginx als root auszuführen.
Wenn Sie einen Port verwenden, der größer als 1024 ist und über ein Root-Privileg verfügt, kann dieses Problem trotzdem auftreten. Dies kann durch SELinux
verursacht werden:
Überprüfen Sie diesen Port, z. B. 8024, in einem separaten Port
Sudo semanage port -l | grep http_port_t
Wenn die Portliste keine 8024 ist, fügen Sie sie dem Segange-Port hinzu
Sudo semanage port -a -t http_port_t -p tcp 8024
Manchmal ist Ihr SELinux disabled
, Sie müssen es zuerst enforcing
. Überprüfen Sie den Status von SELinux über
$ sestatus
Weitere Schritte können in diesem wunderbaren Artikel gelesen werden: https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-1-Basic-concepts
Wenn diese Meldung nach dem Ausführen von "nginx -t" angezeigt wird, haben Sie keine Berechtigung als Root "Sudo nginx -t"
Die beste Lösung wäre:
1) Benutzer zu sudoers hinzufügen (mein Benutzer ist prod)
usermod -aG Sudo prod
2) Im Zirkus (Prozessmanager) hängt Sudo vor der ausführbaren Datei nginx an.
[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) und schließlich Zeile in die Datei/etc/sudoers einfügen (mein Benutzer ist prod). Diese Zeile vermeidet Fehler (Sudo: Kein tty vorhanden und kein Askpass-Programm angegeben). Möglicherweise müssen Sie die Sitzung erneut starten (Neustart). Genießen.
prod ALL = NOPASSWD: /usr/sbin/nginx
nginx benötigt root-Zugang. benutzen Sie bitte
Sudo Nginx
nächsten Schritt zusammen mit Ihrem Passwort