十年河东,十年河西,莫欺少年穷

学无止境,精益求精

简介

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网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

windows环境下  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>
View Code
80占用解决方案
问题出现的原因找到了,接下来的思路就很清晰了:
1.找出来究竟是谁占用了80端口
2.干掉它

首先打开cmd,注意:为了防止不必要的错误,这时候请直接用管理员的身份打开。
运行指令
netstat -ano
这个指令会罗列出当前所有端口的占用情况,并显示出每占用端口的进程的PID,

windows环境下  nginx 安装、常用命令及配置文件

我这台电脑显示,80端口被一个PID为4的进程占用着。
接下来使用指令
taskkill /pid 4
(请根据自己的情况把4替换成自己电脑上显示的进程的PID),结果如下:
windows环境下  nginx 安装、常用命令及配置文件
好吧,如果没能成功,但这个提示还是非常人性化的,根据提示,使用
taskkill /F /pid 4再次尝试:
windows环境下  nginx 安装、常用命令及配置文件
强制删除竟然都不行了,进行到这里,貌似已经被这个问题卡住了。
在网络上搜索了很多解决方法,基本都和上面所讲的一样,对我现在的情况来说都已经证明无效了
网上有一种解决办法是改变nginx的运行端口,但是此时我们是要去解决问题,而不是逃避问题,所以此种方案pass掉。
kill进程的方法除了cmd,还可以通过使用任务管理器。
打开任务管理器,选择进程,会有PID一列,如果没有的话,点击工具栏中的“查看”=>“选择列”,然后把PID勾选上就可以了。
此时我们看到PID为4的进程名称为system
 
windows环境下  nginx 安装、常用命令及配置文件

我们在这一行右键,点击“结束进程”,发现竟然还是没有效果,这真是我遇到过最坚挺的进程了。
去网上搜索之后,system进程是系统服务进程,系统服务都会由这个进程来启动。了解到是http的系统服务,先尝试在dos中搜索services.msc查看系统服务,没有找到对应的名称,于是再去cmd中尝试关闭一下http看看
net stop http
windows环境下  nginx 安装、常用命令及配置文件
经过对话和等待,界面显示HTTP服务已成功停止
接下来我们使用指令来单独看看80端口是否还有进程
netstat -ano | findstr 0.0.0.0:80
再通过netstat -ano查看一下端口列表,再三确认,都看不到80端口的占用情况,接下来start nginx,并且使用nginx查看:
windows环境下  nginx 安装、常用命令及配置文件
这次也没有报错信息了。
再次启动项目,一切正常。

相关文章: