Write the Code. Change the World.

7月 01

前言

如果仅仅下载nginx,解压,运行nginx,是没啥错误,当使用 winsw 设置 nginx自启动 时,或配置修改了 conf,通常会出现各种错误。

错误列表

(一)

D:\service\wnmp\nginx>nginx -s reload

nginx: [error] OpenEvent("Global\ngx_reload_2128") failed (5: Access is denied)


根据这个提示,应该是权限问题,分别用服务启动和命令启动nginx后发现服务启动后nginx是以 system 身份运行的,而命令启动后nginx是以 administrator 身份运行的。这样看问题应该是出在了服务的运行身份上,所以我们应该修改服务的运行身份,具体修改方法:

依次操作 我的电脑右键 -> 管理 -> 服务 -> nginx -> 属性 -> 登录 -> 登录身份 -> 此账户 -> 填入administration,再填入密码 。修改完后重启服务再试 nginx -s reload ,一切正常。如下图:

(二)

D:\service\wnmp\nginx>nginx -s reload

nginx: [error] OpenEvent("ngx_reload_31796") failed (2: The system cannot find the file specified)

这个是最常见的错误了,一般引起这个错误的主要原因是nginx不能处理特定pid的nginx进程而造成的。这个错误信息中 reload 还有可能是 stop,quit ,而后面的31796则是当前logs\nginx.pid 中的值。

原来是 服务启动命令行启动 的会话id不同。nginx以服务方式启动的会话id是0,而命令行启动的会话id是7,所以不能操作会话id 0启动的nginx。所以在命令行中手动 start nginx 启动下,这时nginx.exe的会话id就是现在用的。 然后,再 nginx -s reload ,一起开始正常了。

由于在Windows下文件路径可以用 “\”,也可以用 “\\”, 也可以用“/”作为路径做分隔符。但”\”最容易引发问题,所以要尽量避免使用。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注