这是 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;
...
}