“配置文件 /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,请在启用站点时检查该文件 Ad sudo 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 测试失败”:我怎么知道为啥会这样?的主要内容,如果未能解决你的问题,请参考以下文章