Nginx无法重新加载-如何查找原因?


96

嗨,我的Nginx服务器在Ubuntu服务器12.04上运行了一段时间。

我一直在逐步增加各种技巧,并在我的wordpress页面上优化了加载时间。

对主机文件进行一些更改后,我决定:

sudo /etc/init.d/nginx reload

我得到:

  • 重新加载nginx配置nginx [失败]

没有给出其他信息或推理。如何重新启动服务器,以便在重新加载时打印任何错误声明,以便可以开始查找错误。

对于奖金问题:

对于那些Nginx系统管理员,当您对主机进行了大量更改并附加了一些其他信息后,突然您的nginx服务器将无法重新加载(顺便说一句,一切似乎仍在运行!),如何开始隔离的方法为什么或开始分解调试!


4
使用以下命令检查语法sudo nginx -t(或配置前缀和主配置文件sudo nginx -p /etc/nginx -c nginx.conf在哪里)。/etc/nginxnginx.conf
Lekensteyn 2014年

sudo nginx -s reload似乎也给了我一个读出!
Huw 2014年

Answers:


145

检查syslog(/ var / log / syslog),以获取有关配置文件问题的消息。

在命令行中,您可以运行:

nginx -c /etc/nginx/nginx.conf -t

让Nginx检查您的配置是否有错误。


啊哈!我似乎非常有用:位置“ / blog / wp-admin”在/etc/nginx/site-configs/wordpress.conf中的位置“ /blog/.*\.php$”之外:1 ...有趣,给我继续的东西!
Huw 2014年

2
啊!经过三个小时的搜索,结果我错过了; 感谢您提供的所有帮助,事实证明对于跟踪它至关重要。顺便说一句,如果有人在关注Ars Technica网站发布的帖子后最终遇到了这个问题。我想我已经用细齿梳梳过它们了!
Huw 2014年

4
运行此命令给了我nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful,但我仍然无法启动nginx
Bill Garrison 2015年

1
@BillGarrison检查系统日志和Nginx错误日志以获取更多信息
Dlloyd


7

您可能应该检查中的错误/var/log/nginx/error.log

就我而言,我没有为ipv6添加端口。您还应该这样做(以防在80以外的端口上运行nginx): listen [::]:8000 default_server ipv6only=on;


1
注意:如果您对的权限错误/var/log/nginx/error.log,nginx将无法向其写入错误,并且将以静默方式失败。按照接受的答案(nginx -c /etc/nginx/nginx.conf -t)检查您的配置会有所帮助。
user898763452

5

我运行了以下命令以使nginx备份并正常工作:

# remove nginx conf files
apt-get purge nginx

# reinstall
apt-get install nginx

# make sure the default site is enabled
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

# start nginx
sudo /etc/init.d/nginx start 

nginx现在正在工作!


2
您不必删除和清除,只需清除即可。很难知道这是否会回答该问题,因为清除会删除所有配置文件。

1
理想情况下-对于其他用户,我希望获得最大的读数,以了解发生故障的位置并修复我当前的安装,而不是清除并从头开始
Huw 2015年

1
@ bodhi.zazen我更正了我的答案。至于“胡”的说法,我同意。仅仅是我刚刚开始安装和设置,nginx因此删除并重新开始而不是查找错误并不是什么大问题。谢谢你们的现场。
亚伦·莱里维耶

就我而言,我只需要开始使用此命令 sudo /etc/init.d/nginx start
Sizzling Code'Oct

3

检查您/etc/nginx/sites-available/default或您正在使用的副本,并确保取消注释(删除#}{可能未注释的内容有关的任何内容。那是我的问题。



2

使用以下命令重新打开所有文件

nginx -s reopen

然后使用

nginx -s reload

如nginx help所示,它将信号发送给主进程来重新加载nginx。它应该可以工作。

要求:请purge不要不加小心地提供命令,因为这可能会给初学者造成麻烦(所有配置都会丢失)。


1

如果出现此类错误,则可以签journalctl -xe出。
它具有有关操作系统问题的大量信息。
您可以找到这行代码,也可以简单journalctl -xe | grep nginx地找到nginx在尝试自行运行时发生了什么。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.