十年河东,十年河西,莫欺少年穷
学无止境,精益求精
简介
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
使用场景
web反向代理,负载均衡,动静分离
下载安装
下载地址:http://nginx.org/en/download.html
下载下安装包后,解压,然后在解压目录下执行指令进行启动【我的路径为:C:\MQ\nginx-1.18.0>】,如下:
C:\Users\chenwolong>cd C:\MQ\nginx-1.18.0
C:\MQ\nginx-1.18.0>start nginx
启动Nginx:
在我第一次启动Nginx时,报错如下:
2021/03/25 16:26:20 [emerg] 13144#10476: 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)
根据这个错误信息显示,是本地电脑的80端口被占用了,导致nginx无法正常启动。
如果不想看下面的解决方案,Dos中直接执行指令:net stop http
C:\Windows\system32>net stop http 下面的服务依赖于 HTTP Service 服务。 停止 HTTP Service 服务也会停止这些服务。 World Wide Web 发布服务 SSDP Discovery Print Spooler 你想继续此操作吗? (Y/N) [N]: y World Wide Web 发布服务 服务正在停止. World Wide Web 发布服务 服务已成功停止。 SSDP Discovery 服务正在停止. SSDP Discovery 服务已成功停止。 Print Spooler 服务正在停止. Print Spooler 服务已成功停止。 HTTP Service 服务正在停止........ HTTP Service 服务无法停止。 C:\Windows\system32>
问题出现的原因找到了,接下来的思路就很清晰了:
1.找出来究竟是谁占用了80端口
2.干掉它
首先打开cmd,注意:为了防止不必要的错误,这时候请直接用管理员的身份打开。
运行指令netstat -ano
这个指令会罗列出当前所有端口的占用情况,并显示出每占用端口的进程的PID,

我这台电脑显示,80端口被一个PID为4的进程占用着。
接下来使用指令
taskkill /pid 4(请根据自己的情况把4替换成自己电脑上显示的进程的PID),结果如下:

taskkill /F /pid 4再次尝试:

在网络上搜索了很多解决方法,基本都和上面所讲的一样,对我现在的情况来说都已经证明无效了
网上有一种解决办法是改变nginx的运行端口,但是此时我们是要去解决问题,而不是逃避问题,所以此种方案pass掉。
kill进程的方法除了cmd,还可以通过使用任务管理器。
打开任务管理器,选择进程,会有PID一列,如果没有的话,点击工具栏中的“查看”=>“选择列”,然后把PID勾选上就可以了。
此时我们看到PID为4的进程名称为system

我们在这一行右键,点击“结束进程”,发现竟然还是没有效果,这真是我遇到过最坚挺的进程了。
去网上搜索之后,system进程是系统服务进程,系统服务都会由这个进程来启动。了解到是http的系统服务,先尝试在dos中搜索services.msc查看系统服务,没有找到对应的名称,于是再去cmd中尝试关闭一下http看看
net stop http

接下来我们使用指令来单独看看80端口是否还有进程
netstat -ano | findstr 0.0.0.0:80再通过
netstat -ano查看一下端口列表,再三确认,都看不到80端口的占用情况,接下来start nginx,并且使用nginx查看:

再次启动项目,一切正常。