如何轻松查找 nginx 配置文件中的错误
如果你编辑了某个 nginx 配置文件而 nginx 不想重新加载或重启,例如有类似这样的错误消息:
check_nginx.sh
# 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.你的某个配置文件中可能有错误。
有一个简单的命令可以检查错误(你需要以 root 身份运行):nginx -t
示例输出:
nginx_error_output.txt
nginx: [emerg] unknown directive "autoindex$" in /etc/nginx/sites-enabled/mysite:31
nginx: configuration file /etc/nginx/nginx.conf test failed首先,最后一行告诉你配置文件中确实存在某些错误。
第一行告诉你确切位置:/etc/nginx/sites-enabled/mysite:31 表示:查看文件 /etc/nginx/sites-enabled/mysite,第 31 行。
在这种特殊情况下,实际错误消息是 unknown directive "autoindex$"。通过检查上述文件,我能够发现我意外输入了 autoindex $; 而不是 autoindex on;
修复此问题后,nginx -t 显示配置文件现在似乎正确:
nginx_test_success.txt
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful注意虽然大多数 nginx 无法(重新)启动的情况是由配置文件中的问题引起的,但在某些情况下配置文件似乎正确而 nginx 仍然无法启动。在这种情况下,查看通常位于 /var/log/nginx/error.log 的日志文件。你需要以 root 身份才能查看它。我推荐此命令:
tail_nginx_errorlog.sh
sudo tail -n 1000 /var/log/nginx/error.logIf this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow