How to easily find errors in nginx config files
If you edited some nginx config file and nginx doesn’t want to reload or restart, e.g. with an error message like this:
# service nginx reload
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
you likely have some error in one of your config files.
There’s a simple command to check for errors (you need to run it as root): nginx -t
Example output:
nginx: [emerg] unknown directive "autoindex$" in /etc/nginx/sites-enabled/mysite:31
nginx: configuration file /etc/nginx/nginx.conf test failed
Firstly, the last line tells you that there actually is some error in the config files.
The first line tells you exactly where it is: /etc/nginx/sites-enabled/mysite:31
means: Look in the file /etc/nginx/sites-enabled/mysite
, line 31.
In this particular case, the actual error message is unknown directive "autoindex$"
. By checking the aforementioned file I was able to find out that I accidentally entered autoindex $;
instead of autoindex on;
After fixing this issue, nginx -t
shows that the configuration file seems correct now:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Note that while most cases of nginx failing to (re)start are caused by issues in the config files, there are some cases in which the config file seems correct and nginx will still not start up. In that case. have a look at the logfile which is commonly located at /var/log/nginx/error.log
. You need to be root in order to view it. I recommend this command:
sudo tail -n 1000 /var/log/nginx/error.log