You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows Server 2022下Apache绑定指定IP端口启动失败求助

Windows Server 2022下Apache绑定指定IP端口启动失败求助

嗨,我仔细梳理了你的问题场景,咱们一步步来排查解决这个Apache启动失败的问题!

问题回顾

你的环境和遇到的问题如下:

  • Windows Server 2022单网卡配置了两个IP:192.168.1.8 和 192.168.1.9
  • IIS上的站点已经调整为仅绑定192.168.1.9的80、443、856端口(之前是监听所有IP)
  • 尝试让Apache绑定192.168.1.8的80和443端口,但启动时报错:
    (OS 10013)Intento de acceso a un socket no permitido por sus permisos de acceso.  : AH00072: make_sock: could not bind to address 192.168.1.8:80
    AH00451: no listening sockets available, shutting down
    AH00015: Unable to open logs
    
  • 执行netstat -ano | findstr :80后发现,0.0.0.0:80被PID为4的进程监听着

问题根源

PID为4的进程是Windows系统的System进程,背后对应的是HTTP.sys服务——这是Windows内核级的HTTP驱动,IIS就是依赖它处理HTTP请求的。哪怕你已经把IIS站点改成绑定特定IP,HTTP.sys默认还是会监听所有IP地址的80端口(也就是0.0.0.0:80),这就导致Apache无法绑定192.168.1.8:80,因为端口已经被HTTP.sys抢占了。

解决步骤

  • 以管理员身份打开命令提示符(CMD)或PowerShell,执行命令限制HTTP.sys仅监听IIS使用的IP:
    netsh http add iplisten ipaddress=192.168.1.9
    
  • 重启HTTP服务(此操作会暂时中断IIS等依赖HTTP的服务,若提示无法停止可选择强制停止或直接重启服务器):
    net stop http
    net start http
    
  • 再次执行netstat -ano | findstr :80,确认0.0.0.0:80的监听条目消失,只有192.168.1.9相关的80端口连接
  • 尝试启动Apache,此时应该能成功绑定192.168.1.8:80和443端口

额外小技巧

如果后续需要调整监听规则,可以用以下命令查看当前HTTP.sys的监听IP:

netsh http show iplisten

若要移除某个监听IP,执行:

netsh http delete iplisten ipaddress=XXX.XXX.XXX.XXX

备注:内容来源于stack exchange,提问作者Daviid

火山引擎 最新活动