问题

当我在cmd中运行start nginx之后再运行 nginx -s stop 或者nginx -s reload 的都会报以下的错误。

nginx: [error] OpenEvent(“Global\ngx_stop_1676”) failed (2: The systemcannot find the file specified)

在这里插入图片描述

原因

为什么会出现这个问题呢让我们一步步定位:

其实这个报错意思就是你的nginx并未启动成功,那么为什么会出现nginx无法正常启动呢,我当时是觉得可能是端口导致的问题,于是我将80端口改成了8080端口,发现居然好使了
E:\nginx-1.14.0\conf\nginx.conf)【配置地址】(自己参照修改)
(修改下图红框处listen值 即可)

在这里插入图片描述

解决方法

那么如果我们需要使用的一定是80端口那怎么办,那说明真相只有一个!!!!
在这里插入图片描述
答案:80端口被占用

那么我们需要去查看一下到底是什么进程占用了80端口

80端口 一般会被 Apache 或是IIS 占用。因为系统是默认的80端口。

如果想查看80端口被占用

可以直接在cmd中运行 netstat -ano 查看 80端口占用情况。
在这里插入图片描述

通过PID 为一个数值,在任务管理器中查看PID 列。

如图 PID 为4 ,那么在任务管理器中 查看PID 为4的进程

如果没有显示 PID 列。
在这里插入图片描述

可以在 进程—>查看----选择列。选择PID列

在这里插入图片描述

然后就可以判断到底是哪个 PID 的进程或是服务占用了。

80端口被system(pid=4)占用的解决方法

那么我们已经定位到了是被pid4占用了80端口的使用

那么pid到底是什么程序呢,面子这么大,能让系统占用80端口的?

1.查找80端口被谁占用的方法

原因一:

进入命令提示行(开始运行输入 CMD),输入命令 netstat –ano ,就可以看到本机所有端口的使用情况,一般80端口在第一行,截图显示,端口已经被占用,PID 中写明 LISTENING 4。

PID=4 的程序是哪一个呢?

1.在命令提示和下输入指令 tasklist ,列出所有当前运行的进程,

2.发现 PID=4 的进程,居然是 system

原因二:

除此之外,我还在网上找到了另外80端口被 system 占用的原因,就是微软家的 IIS 服务,关闭方式可以去控制面板去关闭即可。**

2.取消 system 进程对80端口的占用

因为我遇到的是第一种问题,所以原因二具体方法这里就不赘述了,大家可以根据我上面文章结合其他博主解决方案解决。

方法一:

经过查询,发现占用80端口是 SQL Server里面的组件——SQL Server Reporting Services (MSSQLSERVER)。是 SQL Server 的日志系统,就是他好端端的突然占用了80端口,而且对于普通人来讲,这个组件的作用没啥用,关掉也是节约资源。

关闭方法很简单,在运行框中输入 services.msc ,进入服务窗口。或者直接在开始菜单里面的搜索框中输入“服务”即可打开。然后找到 SQL Server Reporting Services (MSSQLSERVER) 这个服务,然后停止,被占用的80端口就被释放出来了。你也可以设置它的启动方式为“禁用”

方法二:(这两个方法我是一起用的,所有我认为一肯定是有效的二的话我不确定大伙可以试试)

用 “WIN“+”R“的组键,调出命令窗口,输入命令”regedit“,调出注册表:
在这里插入图片描述

在这里插入图片描述

单击注册表下的HKEY_LOCAL_MACHINE,在点开SYSTEM
在这里插入图片描述

再点开SYSTEM下的CurrentControlSet,再点开Services

在这里插入图片描述

Services下单击HTTP,然后在注册表右边双击打开Start属性项。
在这里插入图片描述

Start的属性值改成0,单击确定,设置完成。
在这里插入图片描述

80和8080端口的区别(选看)

经过上面的操作后,nginx已经是可以正常启动,如果还是无法正常启动的同学,建议仔细认真的再操作一遍,端口不同的话也可用同样的方法更改。

当然其实我本身对于80端口和8080端口的区别并不是很了解所以我也顺便学习了一下两者的区别,有兴趣的可以观看一下

80端口和8080端口没有本质区别

80端口和8080端口经常用于Web应用程序,只是数字的区别而已,没有本质的区别。

  • IIS,微软的internet信息服务器,提供web服务,默认使用80端口
  • apache,一个开源的web服务器,提供web服务,默认使用8080端口

一般80作为网页服务器的访问端口,比如一个网站的ip地址是123.123.123.123,我们访问的是123.123.123.123:80
只是80是默认端口可以省略。但是如果一个服务器上有不同的站点,那可以用另外的端口,比如123.123.123.123:8080
来访问,选择8080是因为两个80好记。

80是http协议的默认端口,是在输入网站的时候其实浏览器(非IE)已经帮你输入协议了,所以你输入http://baidu.com,其实是访问http://baidu.com:80。而8080,一般用与webcahe,完全不一样的两个,比如linux服务器里apache默认跑80端口,而apache-tomcat默认跑8080端口,其实端口没有实际意义只是一个接口,主要是看服务的监听端口。


持续更新中…

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐