Opened 10 years ago
Closed 10 years ago
#713 closed defect (invalid)
access_log path with variable computes path incorrectly
Reported by: | https://stackoverflow.com/users/573152/bernard-rosset | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-module | Version: | 1.6.x |
Keywords: | Cc: | ||
uname -a: | Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.6.2
built by gcc 4.7.2 (Debian 4.7.2-5) TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_spdy_module --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,--as-needed' --with-ipv6 |
Description
In /etc/nginx/conf.d/example.com.conf
:
map $http_user_agent $access_log { ~*bot off; default /var/log/nginx/example.com/access.log; }
server { access_log $access_log main; }
File is included from /etc/nginx/nginx.conf
, after log_format main
is defined
error.log
contains:
[crit] 9091#0: *252296 open() "/etc/nginx//var/log/nginx/example.com/access.log" failed (2: No such file or directory) while logging request
Note:
See TracTickets
for help on using tickets.
This is because access_log with variables respects the root path, whilst the intermediate directories do not exist. See http://nginx.org/r/access_log:
: during each log write the existence of the request’s root directory is checked, and if it : does not exist the log is not created
An another unnoticed configuration error is trying to use the special off value as calculated from the access_log variable: such configuration would not work as one could expect, because it will rather log the request at the specified "off" file path (again, wrt the root directory). See http://nginx.org/r/access_log:
: The special value off cancels all access_log directives on the current level.
Note that the "off" is a literal value.
See below:
: The file path can contain variables.
That means that variables is the only property of file paths.
You better try with "access_log if" facility.