Nginx journal stderr
Je veux rediriger nginx les journaux d'accès à stdout
pour être en mesure de les analyser à travers journalctl
(systemd).
Il y a la même question avec a approuvé la réponse.
Ont nginx access_log et error_log journal de STDOUT et STDERR de maîtriser le processus
Mais il ne fonctionne pas pour moi. Avec /dev/stderr
- je obtenir open() "/dev/stderr" failed (6: No such device or address)
. Avec /dev/stdout
je n'ai pas de journaux d'accès dans journalctl -u nginx
.
nginx.conf
daemon off;
http {
access_log /dev/stdout;
error_log /dev/stdout;
...
}
...
sitename.conf
server {
server_name sitename.com;
root /home/username/sitename.com;
location /{
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log on;
}
}
nginx.service
[Service]
Type=forking
PIDFile=/run/nginx.pid
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nginx
ExecStartPre=/usr/sbin/nginx -t -q -g 'master_process on;'
ExecStart=/usr/sbin/nginx -g 'master_process on;'
ExecReload=/usr/sbin/nginx -g 'master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
J'ai essayé de mon mieux pour éviter que la modification de tous les paramètres possibles dans le code ci-dessus et avec différents nginx versions (1.2, 1.6) mais sans succès.
Je suis vraiment, vraiment intéressé comment faire ce travail si je soulève cette question sur un autre fil de discussion que je considère précédente réponse est fausse, la spéculation ou de l'environnement spécifique.
$ journalctl -u nginx
ne contient que des lignes comme
Feb 08 13:05:23 Username systemd[1]: Started A high performance web server and a reverse proxy server.
et aucun signe de journaux d'accès 🙁
Vous devez vous connecter pour publier un commentaire.
Selon la nginx documentation, le
error_log
directive prend en chargestderr
comme argument. La configuration suivante doit, par conséquent, journal des messages d'erreur vers stderr:Malheureusement,
access_log
ne prend pas en chargestdout
comme argument. Cependant, il devrait être possible de mettre àsyslog
(la documentation) et d'obtenir systemd pour inclure syslog appelle dans son journal.Par défaut journald de configuration (je suis sur Ubuntu 15.04) lit à partir de syslog, de sorte que cette config est tout ce qu'il faut faire pour avoir des traces visibles avec
journalctl -u nginx