我在 Windows 7 机器上运行 Apache 2.4.10,并尝试添加 SSL 连接。端口 80 连接工作正常,我正在尝试添加端口 443。添加 httpd.conf 后,Listen 443
它无法启动:
c:\Apache24\bin> httpd.exe -k start
(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : AH00072: make_sock: could not bind to address [::]:443
(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : AH00072: make_sock: could not bind to address 0.0.0.0:443
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs
最初使用 进行的检查netstat
显示 Chrome 使用端口 443,因此我退出 Chrome,并且在超时之后,使用 进行的端口现在为空,但是当存在netstat
时服务器仍然无法启动:Listen 443
c:\Apache24\bin> netstat -ano | grep 443
我如何确定谁已经在端口 443 上并阻止 Apache 服务器使用该端口?
答案1
该问题似乎是由于 Apache 与自身发生冲突,因为存在两个Listen 443
指令,一个是我添加的,另一个是通过 include 添加的:
<IfModule ssl_module>
#Include conf/extra/httpd-ssl.conf
Include conf/extra/httpd-sni.conf
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
其中conf/extra/httpd-ssl.conf
出现了矛盾的一句话:
Listen 443 https
删除Listen 443
I 添加的项解决了该问题。
答案2
c:\Apache24\bin> netstat -ano | grep 443
将列出所有 processId 绑定 443,例如:
TCP xxx:xxx xxx:443 ESTABLISHED 4332
TCP xxx:xxx xxx:443 ESTABLISHED 7164
然后执行:
c:\Apache24\bin> 任务列表 | grep -e “4332” -e “7164”
将根据 ID 列出所有进程,例如:
MyPopo.exe 4332 Console 1 87,424 K
firefox.exe 7164 Console 1 522,576 K
答案3
sysinternals 的 Tcpview 显示所有与网络相关的内容,包括哪个程序正在使用端口:
http://live.sysinternals.com
答案4
解决问题的程序:
- 将 ssl.conf 文件重命名为 ssl.conf.bak
- 启动 httpd