windows 开启 nginx 监听80 端口 以及 禁用 http 服务后,无法重启 HTTP 服务,提示 系统错误 123,文件目录、卷标出错

1. 正常情况直接运行  start nginx.exe 不能开启成功,因为 80 端口被占用。提示: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)   可以查看 ngxin 的日志,Logs/errors.log 文件

2. 查看 端口占用情况:netstat -ano | findstr 0.0.0.0:80  发现是 PID=4 ,这个是系统进程中的 http 服务。所以需要关闭 HTTP服务

3. 管理员 cmd: sc config http start= disabled (注意等号右侧的空格)。

这一项主要修改的实质地方是注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP 

修改前:

修改后:

有的电脑运行完命令可能 imagePath,也会被修改掉:例如变成这样:\SystemRoot\\SystemRoot\\SystemRoot\system32\drivers\HTTP.sys  这个路径显然是错误的,这个键主要关联的是 system32\drivers\HTTP.sys 这个文件。所以在开启 http 服务的时候会遇到 系统错误 123,文件目录、卷标出错

4. 重启电脑

5. 开启 ngixn ,start nginx.exe ,会提示 开启成功

6. 然后 开启 http 服务,否则 IIS 不能使用,命令:sc config http start=demand & net start http 

7. 打开 IIS 修改所有原来绑定 80 端口的网站,更换为 8001.。..等等随便

8. 打开 服务(services.msc)找到 World Wide Web Publishing Service  这个服务。点击启动。(这个服务就是 IIS 的主服务) 如果启动失败,提示缺少 依赖或组,那么右键属性查看依赖的服务是否都开启成功。 这个服务 依赖于系统 HTTP 服务, 可能在依赖列表没有,这就是第6步必须操作的原因。

或者也可以从 ”服务器“这个软件进行操作,开启 W3SVC 服务 和 IIS-ADMIN。(这个可选把?)

9. 这样就实现了 windows 中ngixn和IIS 共存,然后使用  ngixn 监听80 然后转发到不同端口进行处理。

 


可能会遇到的问题:

1. 配置好的电脑突然重启,这时候只要 start nginx.exe 然后 net start http 服务 然后 启动 W3SVC 服务

2. 多次运行了 sc config http start= disabled  这个命令,导致注册表错乱。 demand 对应的注册表 Start 项的 3, disabled 对应 4. 

3. 还有一种解决IIS占用 80为题就是,直接打开 IIS 找到 绑定 80 端口的网站,点击右侧绑定,修改端口,然后保存重启。就 不占用了。

 

参考网址:

https://blog.csdn.net/wh_forever/article/details/51734244

https://blog.csdn.net/u010792238/article/details/22661767

 

posted @ 2018-08-21 10:23  佰大于  阅读(1205)  评论(0编辑  收藏  举报