Windows Sever关于80端口之争

默认情况下安装了IIS服务器角色的Windows系统,其80端口就被占用了。但是占用80端口的进程却不是WWW Service更不是IIS Admin Sevice,而是处于kernel地位的Http.sys。通过命令netstat -ano可以轻易发现占用80端口的是PID为4的System进程。该进程是Winodws NT系统的内核进程的别名。硬件系统启动并完成引导后载入的Windows系统内核和其他重要的系统文件,其中包含http.sys。http.sys准确来说是实现http协议的组件,不是一个Windows服务,在系统进程中无法找到,在系统的服务中也无法找到,但却是IIS的重要组件WWW Service所依的关键组件。下图展示了IIS的Http的请求架构,更多关于IIS的架构可以查阅这里

introduction-to-iis-architecture-101-overviewofhttprequest.png

回到主题,http.sys作为kernel地位的组件可不是IIS专属的,许多面向Windows应用和服务都可以调用http.sys的API进行编程,带来了很多方便。但是对于诸如Apache和Nginx这些诞生于Linux的开源软件移植到Windows平台时,就不那么有趣了,他们不使用http.sys的API。那么问题来了,不使用共同的中间件,出现硬件资源冲突在所难免。如果可以确保改系统只用于运行Apache和Nginx这些软件,那可以简单的使用命令net stop http的停掉http.sys。但是依赖http.sys的应用和服务太多了,而且有时我们希望他们能够共存,并解决端口冲突的问题。

那么比较好的解决方案是:限制http.sys监听80端口的ip地址,让http.sys只监听在列表中的IP的80端口,而其他的IP地址的80端口给Apache和Nginx使用。如下:

PS C:\Users\administrator.cloud> netsh
netsh>http
netsh http>add iplisten 172.16.1.1

IP address successfully added

netsh http>show iplisten

IP addresses present in the IP listen list:
-------------------------------------------

    172.16.1.1

netsh http>delete iplisten 172.16.1.1

IP address successfully deleted

netsh http>quit

转载于:https://www.cnblogs.com/qingspace/p/3593993.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值