web-dev-qa-db-fra.com

Nginx tente toujours d’ouvrir le fichier journal des erreurs par défaut même si j’ai défini le fichier de configuration nginx lors du rechargement

Ci-dessous se trouve mon fichier de configuration nginx situé dans /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;
        }
    }
}

Comme vous pouvez le constater, je modifie le journal, l’emplacement des fichiers pid dans le répertoire de base.

Lorsque je redémarre Linux, il semble fonctionner, Nginx enregistre les journaux d'erreurs dans le fichier que j'ai défini et le fichier pid également.

Cependant, quand il essaie nginx -s reload ou l’autre, il essaie d’ouvrir un autre fichier journal d’erreurs.

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

Je sais que je peux résoudre l'erreur de permission avec Sudo mais le problème principal ici est un fichier journal d'erreur (/var/log/nginx/error.log) que Nginx essaie d'ouvrir.

Pourquoi tente-t-il d'accéder à un autre fichier journal d'erreur?

14
SangminKim

Vérifiez les autorisations sur le répertoire/home/Foo/log/nginx /. Il doit être accessible en écriture par nginx. Définissez les autorisations de la manière suivante:

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

C'est vieux ... mais j'ai vécu la même douleur et voici ma solution.

Comme vous pouvez le constater, le journal est une alerte et non une erreur de blocage:

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

Cela ne devrait pas être un problème :) Nginx aime juste vérifier ce fichier au démarrage ...

Il suffit d'utiliser l'option -p. Quelque chose comme ça pour lancer Nginx localement fonctionne pour moi:

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

Oui, Nginx aime juste vérifier ce fichier au démarrage. Je copie le répertoire installé nginx à un autre endroit, je le démarre et le pid du nouveau Nginx toujours à l’ancienne place. Je vous suggère donc de supprimer l'ancien répertoire.

0
maxiaotiao

Vous devrez peut-être le lancer avec Sudo

Sudo nginx -t
0
T.Todua