The documentation states: At startup, ‘nginx’ has not yet read its configuration file, so it uses a default file to log error messages. If it fails to load its configuration file, that is where error messages are logged. After the configuration file is loaded, the default error log file changes as per configuration. In our case, startup error messages can be found in ‘/var/run/nginx/logs/error.log’, and after configuration in ‘/var/log/nginx/error.log’. The second location can be changed with the LOG-DIRECTORY configuration option.
But I see: creating nginx log directory '/var/log/nginx' creating nginx run directory '/var/run/nginx' creating nginx temp directories '/var/run/nginx/{client_body,proxy,fastcgi,uwsgi,scgi}_temp' nginx: [alert] could not open error log file: open() "/gnu/store/byd116qs89b0am4zwjf4vjai7qlskvaw-nginx-1.17.0/logs/error.log" failed (2: No such file or directory) It seems the documentation assumes nginx’s prefix directory is /var/run/nginx instead of in the store. Some likely ways to improve this would be to pass `-p /var/run/nginx` or `-g “error_log /var/log/nginx/error.log”` as command line flags when starting nginx: $ /gnu/store/byd116qs89b0am4zwjf4vjai7qlskvaw-nginx-1.17.0/sbin/nginx -h nginx version: nginx/1.17.0 Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -T : test configuration, dump it and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /gnu/store/byd116qs89b0am4zwjf4vjai7qlskvaw-nginx-1.17.0/) -c filename : set configuration file (default: conf/nginx.conf) -g directives : set global directives out of configuration file