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

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

图二

nginx启动失败之nginx: [emerg] invalid number of arguments in

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

nginx启动失败之nginx: [emerg] invalid number of arguments in

问题来了

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

nginx启动失败之nginx: [emerg] invalid number of arguments in

然后使用nginx -t命令来判断配置文件是否正确。发现问题依然定位在了配置文件的第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

问题定位

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

这里写图片描述

结束语

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

你可能感兴趣的:(遇到的问题,nginx启动失败)