我想将 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;
...
}
...
站点名称.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.
并且没有访问日志的迹象:(