wake-up-neo.com

Nginx versucht weiterhin, die Standardfehlerprotokolldatei zu öffnen, obwohl ich die Nginx-Konfigurationsdatei beim Neuladen eingestellt habe

Im Folgenden finden Sie meine Nginx-Konfigurationsdatei in /etc/nginx/nginx.conf.

user Foo;
worker_processes 1;

error_log /home/Foo/log/nginx/error.log;
pid /home/Foo/run/nginx.pid;

events {
    worker_connections 1024;
    use epoll;
}

http {
    access_log /home/Foo/log/nginx/access.log;

    server {
        listen 80;

        location = / {
            proxy_pass http://192.168.0.16:9999;
        }
    }
}

Wie Sie sehen können, ändere ich das Protokoll, den Ort der PID-Dateien im Home-Verzeichnis.

Wenn ich Linux neu starte, scheint es zu funktionieren, Nginx zeichnet Fehlerprotokolle in der von mir eingestellten Datei und auch in der pid-Datei auf.

Wenn er jedoch nginx -s reload oder den anderen versucht, versucht er, eine andere Fehlerprotokolldatei zu öffnen.

nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2015/12/14 11:23:54 [warn] 3356#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2015/12/14 11:23:54 [emerg] 3356#0: open() "/home/Foo/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed

Ich weiß, ich kann den Berechtigungsfehler mit Sudo lösen, aber das Hauptproblem hier ist eine Fehlerprotokolldatei (/var/log/nginx/error.log), die Nginx zu öffnen versucht.

Warum versucht es, auf eine andere Fehlerprotokolldatei zuzugreifen?

14
SangminKim

Überprüfen Sie die Berechtigungen für das Verzeichnis/home/Foo/log/nginx /. Es muss von Nginx beschreibbar sein. Setzen Sie Berechtigungen wie folgt:

Sudo chmod 766 /home/Foo/log/nginx
3
cantelope

Das ist alt ... aber ich hatte die gleichen Schmerzen und hier ist meine Lösung.

Wie Sie sehen, ist das Protokoll eine Warnung und kein Blockierungsfehler:

nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)

Es sollte kein Problem sein :) Nginx möchte diese Datei beim Start einfach überprüfen ...

Verwenden Sie einfach die Option -p. Etwas wie das, um Nginx lokal zu starten, funktioniert für mich:

nginx -c /etc/nginx/nginx.conf -g 'daemon off;' -p /home/Foo/log/nginx
5
RicLeal

Ja, Nginx möchte diese Datei beim Start einfach überprüfen. Ich kopiere das installierte Verzeichnis von nginx an einen anderen Ort, ich starte es und die PID des neuen Nginx ist noch in der alten Position. Ich schlage vor, dass Sie das alte Verzeichnis löschen.

0
maxiaotiao

Möglicherweise müssen Sie es mit Sudo auslösen.

Sudo nginx -t
0
T.Todua