Я хочу перенаправить журналы доступа nginx на stdout
, чтобы иметь возможность анализировать их через journalctl
(systemd).
Есть тот же вопрос с одобренным ответом.
Имейте nginx access_log и журнал error_log в STDOUT и STDERR основного процесса
Но это не работает для меня. С /dev/stderr
я получаю open() "/dev/stderr" failed (6: No such device or address)
. С /dev/stdout
я не получаю журналы доступа в 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
Я изо всех сил старался обходным путем, изменяя все возможные параметры в коде выше и с разными версиями nginx (1.2, 1.6), но без каких-либо успехов.
Мне действительно очень интересно, как это сделать, поэтому я поднимаю этот вопрос еще раз на другой поток, поскольку считаю, что предыдущий ответ неправильный, спекулятивный или специфичный для среды.
$ journalctl -u nginx
содержит только строки, такие как
Feb 08 13:05:23 Username systemd[1]: Started A high performance web server and a reverse proxy server.
и никаких признаков журналов доступа: (