欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx启动失败之nginx: [emerg] invalid number of arguments in "root" directive in nginx/nginx.conf:41

程序员文章站 2022-05-24 18:05:57
...

Write By Monkeyfly

以下内容均为原创,如需转载请注明出处。

前提

  • 由于更换了新的SVN地址,所以必须在新的SVN地址上重新检出所有的项目至本地。
  • 因为之前都习惯用中文命名文件夹,这次就想尝试用英文命名。而且之前也听别人说中文命名可能会导致某些问题
  • 命名的项目文件都会以文件路径的形式出现在nginxconf配置文件中,所以建议用英文命名
  • 我一直都是使用中文命名的,使用半年了,也从来没出现过问题。

过程

  • 于是,随手新建了一个名为New Projects的文件夹,用于存放从SVN地址新导出的几个项目。
  • 导出成功后,在nginxconf配置文件中,配置一下每个项目对应的文件路径。【如图一所示】
  • 配置完成后,在文件资源管理器上方的地址栏中选中并复制自己本地nginx的存放路径。【如图二所示】
  • 我的本地存放路径是C:\Users\Administrator\Desktop\nginx-1.13.7
  • 然后Ctrl + R调出运行对话框,输入cmd并回车打开命令行。
  • 接下来,使用cd命令进入nginx的主目录中,即 cd C:\Users\Administrator\Desktop\nginx-1.13.7
  • 随后在命令行中输入nginx -s reload命令重启nginx【如图三所示】
    (因为更改配置文件之后必须需要重启nginx才能保证修改的配置生效)
  • 重启成功之后,就可以在浏览器中访问当前所配置好的项目了。

图一

nginx启动失败之nginx: [emerg] invalid number of arguments in "root" directive in nginx/nginx.conf:41

图二

nginx启动失败之nginx: [emerg] invalid number of arguments in "root" directive in nginx/nginx.conf:41

图三(以下是配置正确的情况)

nginx启动失败之nginx: [emerg] invalid number of arguments in "root" directive in nginx/nginx.conf:41

问题来了

nginx重启之后,问题就出来了。(如下图所示)

nginx启动失败之nginx: [emerg] invalid number of arguments in "root" directive in nginx/nginx.conf:41

然后使用nginx -t命令来判断配置文件是否正确。发现问题依然定位在了配置文件的第41行。

nginx启动失败之nginx: [emerg] invalid number of arguments in "root" directive in nginx/nginx.conf:41

问题分析

nginx: [emerg] invalid number of arguments in "root" directive in C:\Users\Administrator\Desktop\nginx-1.13.7/conf/nginx.conf:41
/*大概意思就是:nginx在本地文件路径的配置文件中存在了错误,导致无法继续运行。
 *具体错误定位在了conf配置文件的第41行。
 *错误原因:“根”指令中存在无效数量的参数。
*/
  • 总之就是提示第41行的配置文件出错了,出错的具体原因我也不清楚。
  • 因为我觉得是不可能出现问题的,总共就一行代码,而且文件路径也是正确的。
  • 首先就排除了中文命名导致的问题,因为自己以前一直使用中文命名,从未出错过。
  • 所以,肯定是其他的问题。但是我就是不知道为什么。(于是百度了一番,但并没有找到想要的答案)
  • 找到一个同样问题的答案,但最终的原因是代码末尾少写了一个分号导致的,与我的情况完全不符。
  • 后来去群里询问了一下,毕竟人多力量大,就有大佬给出了实质性的建议(如下图示)

nginx启动失败之nginx: [emerg] invalid number of arguments in "root" directive in nginx/nginx.conf:41

问题定位

//问题定位:nginx.conf配置文件 第41行
root C:/Users/Administrator/Desktop/NewProjects/快递公众号/;
  • 经过仔细的观察,才发现原来是文件的英文命名格式出现了错误,具体如下图所示。
  • 在文件命名时,习惯性的在两个单词之间添加了一个空格,才导致后续问题的发生。
  • 然后去掉空格,保存配置后,重启了nginx,问题就消失了,项目也可以成功运行了。

nginx启动失败之nginx: [emerg] invalid number of arguments in "root" directive in nginx/nginx.conf:41

结束语

  • 吃一堑长一智,以后在命名文件夹时一定要注意这两个雷区:中文和空格
  • 因为命名的文件是会以文件路径的形式出现在nginx的配置文件中的,而且配置文件中是不允许文件路径中存在空格的。【这一点一定要注意!!!】
相关标签: nginx启动失败