Wir haben unsere Rails-Anwendung auf Nginx und Passenger implementiert. In unregelmäßigen Abständen werden Anwendungsseiten teilweise geladen. Das Anwendungsprotokoll enthält keinen Fehler. Das Nginx-Fehlerprotokoll zeigt jedoch Folgendes:
2011/02/14 05:49:34 [crit] 25389#0: *645 open() "/opt/nginx/proxy_temp/2/02/0000000022" failed (13: Permission denied) while reading upstream, client: x.x.x.x, server: y.y.y.y, request: "GET /signup/procedures?count=0 HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "y.y.y.y", referrer: "http://y.y.y.y/signup/procedures"
Antworten:
Ich hatte das gleiche Problem bei einem NGINX / PHP-FPM-Setup (php-fpm = verbesserte fcgi für PHP).
Sie können herausfinden, unter welchem Benutzer die Nginx-Prozesse ausgeführt werden
Überprüfen Sie anschließend, ob die Berechtigungen in Ihren Proxy-Dateien korrekt sind
In meinem Fall lief nginx als
www-data
und zwei der Verzeichnisse in meinem Proxy-Verzeichnis gehörten zu root.Ich weiß noch nicht, wie es passiert ist, aber ich habe es behoben, indem ich (als root)
quelle
Sie haben wahrscheinlich mit dem Benutzer root begonnen und ihn dann geändert. Jetzt ist das Problem, dass die Cache-Ordner, dh
sind bereits im Besitz von root, daher kann Ihr Nginx-Benutzer (oder was auch immer Sie versuchen, zu ihm zu wechseln) nicht auf sie zugreifen, da er eine Berechtigung von 700 hat.
Die Lösung ist also einfach. Stoppen Sie Nginx, dann:
oder was auch immer der Pfad auf Ihrer Distribution und Veröffentlichung ist. Starten Sie dann nginx neu, wodurch diese Ordner mit den entsprechenden Berechtigungen neu erstellt werden.
quelle
Überprüfen Sie auch die Datei nginx.conf, um sicherzustellen, dass Sie den richtigen Benutzer und die richtige Gruppe angeben.
Ich hatte ein Problem, bei dem die Berechtigungen für das Verzeichnis für den Benutzernamen / nginx eingerichtet wurden, aber der Benutzer nginx.conf hat nur den Benutzernamen angegeben. Wenn der Benutzeranweisung keine Gruppe zugewiesen wurde, wird standardmäßig derselbe Name wie für den Benutzer verwendet. Daher hat Benutzername / Benutzername versucht, auf ein Verzeichnis anstelle von Benutzername / nginx zuzugreifen. Das Aktualisieren der Konfiguration hat meine Probleme behoben.
Siehe: http://nginx.org/en/docs/ngx_core_module.html#user
quelle
Also habe ich all das oben Genannte getan und leider gab es mir den gleichen Fehler. Ich führe eine Schienen-App aus, die in eine JAR-Datei mit Torquebox auf einer Centos 6.7-Maschine mit Nginx gepackt ist. Ich habe ungefähr 3 Stunden damit gekämpft, bis ich eine andere Lösung gefunden habe, und ich hoffe, es hilft jemand anderem. Nach diesem Artikel kann Nginx im erzwungenen Modus ausgeführt werden. Ich habe einfach mit nginx in den permissive mode gewechselt
Damit war der Fehler behoben und ich konnte meine Anwendung in einer Staging- / Produktionsumgebung ausführen.
Ich hatte keine Ahnung, bis ich den Fehler im audit.log fand
Ich hoffe wirklich, dass dies jemandem die 3 Stunden erspart, die ich gerade verloren habe.
quelle
setsebool -P httpd_can_network_connect 1
von stackoverflow.com/a/24830777/721331Wenn Sie nginx von einem nicht privilegierten Konto aus starten, wird die
use_temp_path=off
.Dies sollte verhindern, dass Nginx versucht, die Dateien in den Standard zu versetzen
proxy_temp_path
. Aus den Nginx-Dokumenten:quelle
Ich hatte das gleiche Problem und es wurde von chmod in dieses Verzeichnis gelöst.
quelle