#750 closed defect (wontfix)
nginx refuses to start when /var/lib/nginx (client_body_temp_path) is a symlink to not yet existing directory
Reported by: | Michael Stapelberg | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-core | Version: | 1.6.x |
Keywords: | Cc: | ||
uname -a: | Linux bc6581cf2b6a 3.18.9-200.fc21.x86_64 #1 SMP Mon Mar 9 15:10:50 UTC 2015 x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.6.2
TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt=-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_auth_request_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 --add-module=/tmp/buildd/nginx-1.6.2/debian/modules/nginx-auth-pam --add-module=/tmp/buildd/nginx-1.6.2/debian/modules/nginx-dav-ext-module --add-module=/tmp/buildd/nginx-1.6.2/debian/modules/nginx-echo --add-module=/tmp/buildd/nginx-1.6.2/debian/modules/nginx-upstream-fair --add-module=/tmp/buildd/nginx-1.6.2/debian/modules/ngx_http_substitutions_filter_module |
Description
Steps to reproduce:
- apt-get install nginx
- systemctl stop nginx
- rm -rf /var/lib/nginx
- ln -sf /tmp/nginx /var/lib/nginx
- systemctl restart nginx
nginx exits with:
2015/04/18 19:00:47 [emerg] 48#0: mkdir() "/var/lib/nginx/body" failed (2: No such file or directory)
I think this is because somewhere in the code, you’re not using ngx_create_full_path(). I tried finding the place, but unfortunately it’s not very clear to me after a couple of minutes of looking, so I figured I’d rather create this ticket than try to fix it myself :).
Note:
See TracTickets
for help on using tickets.
It doesn't try to create full path intentionally, as nginx doesn't know desired access rights on intermediate directories. Additionally, such behaviour limits possible damage on typos.