尽管配置为在其他地方记录,但一些(但不是全部)内容仍然记录到 /var/log/nginx/error.log 中

尽管配置为在其他地方记录,但一些(但不是全部)内容仍然记录到 /var/log/nginx/error.log 中

这是 scee.conf -

pid ./pid;

error_log ./error_log debug;

events {
  worker_connections 1024;
}

http {
  access_log ./access_log;
  server {
    listen 31415;
  }
}

我使用运行它

nginx -c scee.conf -p .

(从其所在目录运行)

大多数内容都会记录在与配置文件相同的目录中,但奇怪的是,每次重新启动 nginx 时,error.log都会继续记录以下行-/var/log/nginx/error.log

2015/05/06 21:41:39 [notice] 2231#0: signal process started

或类似的东西。

这很烦人,因为它要求运行 nginx 的用户能够写入 /var/log/nginx。这是怎么回事?

nginx -V 的输出

nginx version: nginx/1.4.6 (Ubuntu)
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1) 
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module

--error-log-path 编译器标志在这里起什么作用?如果您的配置文件中没有 error_log 指令,它是否仅控制日志的默认位置?

答案1

检查您的配置中是否有多个服务器块。就我而言,我认为这是由于 HTTP 重定向(如下所示)造成的。HTTP 请求被记录在默认日志路径中,但 HTTPS 请求被记录在我预期的位置。

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    return 301 https://example.com$request_uri;
}

server {
    listen 443;
    access_log /path/to/my.log;

    ...

}

相关内容