“配置文件 /etc/nginx/nginx.conf 测试失败”:我怎么知道为啥会这样?
Posted
技术标签:
【中文标题】“配置文件 /etc/nginx/nginx.conf 测试失败”:我怎么知道为啥会这样?【英文标题】:"configuration file /etc/nginx/nginx.conf test failed": How do I know why this happened?“配置文件 /etc/nginx/nginx.conf 测试失败”:我怎么知道为什么会这样? 【发布时间】:2014-04-13 21:37:18 【问题描述】:我是一个 nginx 菜鸟,在 ubuntu 12.04 上尝试关于 nginx 1.1.19 的 this 教程。我有this nginx 配置文件。
当我运行此命令时,测试失败:
$ sudo service nginx restart
Restarting nginx: nginx: [crit] pread() "/etc/nginx/sites-enabled/csv" failed (21: Is a directory)
nginx: configuration file /etc/nginx/nginx.conf test failed
我如何知道 nginx.conf 测试失败的原因?
【问题讨论】:
你的“/etc/ngix/sites-enabled”中还有“default”吗? @RickyA 你的意思是“默认”文件吗?是的,我仍然将该文件放在该目录中。我移动了那个文件并运行了 nginx -s reload 并且仍然从服务器看到相同的行为 错误提到文件 csv,请在启用站点时检查该文件 Adsudo service nginx restart
) Nginx 也有一个 CLI 工具:nginx -s reload
用于重新加载配置以防它发生变化。这要快得多。
【参考方案1】:
sudo nginx -t
应该测试所有文件并返回错误和警告位置
【讨论】:
它只测试一个文件,即:/etc/nginx/nginx.conf 但我如何测试站点启用/默认? 它认为它会测试所有,只要它们包含在默认文件中(我假设它们是?),如果您不使用默认配置文件路径,请尝试使用-c
标志,所以nginx -c /etc/nginx/sites-enabled/default -t
可以确认@MohammadAbuShady 所说的。尽管-t
的手册页有些含糊地说不要运行,只测试配置文件。 nginx 检查配置的语法是否正确,然后尝试打开配置中引用的文件。 这些文件不仅被检查存在,而且被解析。正如预期的那样,如果发现错误,则退出代码为 1,否则为 0。【参考方案2】:
这个特殊的命令对我有用。
sudo apt-get remove --purge nginx nginx-full nginx-common
和
sudo apt-get install nginx
感谢stackexchnage上的这个答案
【讨论】:
【参考方案3】:第一个解决方案是使用basic测试nginx conf
sudo nginx -t
其次,如果您自己更改了文件,将 json 从一个复制/粘贴到另一个,则很有可能存在编码问题。
例如:"
不一样
``
尝试自己编写配置。检查逗号、冒号和大括号。不要忘记重新加载 nginx。
sudo systemctl reload nginx
【讨论】:
【参考方案4】:如果要检查任何 nginx 文件的语法错误,可以使用 -c 选项。
[root@server ~]# sudo nginx -t -c /etc/nginx/my-server.conf
nginx: the configuration file /etc/nginx/my-server.conf syntax is ok
nginx: configuration file /etc/nginx/my-server.conf test is successful
[root@server ~]#
【讨论】:
【参考方案5】:显示文件和跟踪错误
systemctl status nginx.service
【讨论】:
以上是关于“配置文件 /etc/nginx/nginx.conf 测试失败”:我怎么知道为啥会这样?的主要内容,如果未能解决你的问题,请参考以下文章