Apache 为什么可以';在httpd.conf中不使用443?

Apache 为什么可以';在httpd.conf中不使用443?,apache,Apache,如果我在httpd.conf中使用443并希望启动httpd,则错误消息为: (98)Address already in use: make_sock: could not bind to address [::]:443 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 no listening sockets available, shutting down Unable to open

如果我在httpd.conf中使用443并希望启动httpd,则错误消息为:

(98)Address already in use: make_sock: could not bind to address [::]:443
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs
实际上我不使用443,我通过以下方式检查443的端口:

lsof -i:443
我想443的端口是在ssl.conf中使用的,所以我不能在httpd.conf中使用它。 当我在httpd.conf中使用444或666时,我可以启动httpd。


这就是原因吗?

不仔细看一下,是的,这看起来就是原因。在conf.d目录中,默认设置是加载以.conf结尾的所有文件。ssl.conf设置一些通用设置,然后在端口443上定义vhost

我的建议是: 将ssl.conf复制到ssl.conf.bk(或其他任何文件,以备参考) 然后在ssl.conf中编辑vhost以满足您的需要

附言: 让我备份并解释一下conf.d dir,以防一些读者感到困惑。许多项目(不仅仅是Apache)使用这些DIR作为模块化配置文件设置的一种方式。管理员只需将conf文件放到正确的目录中,apache在下次重新加载服务时加载它。我使用一个配置管理器将正确的文件放在正确的服务器上,这样就可以很容易地根据需要启动更多的服务器

缴费灵: 让我再次备份并解释vhost(也称为“virtualhost”)。Apache项目使其web服务器具有足够的灵活性,可以承载多个域。跟我来。我可以在互联网上安装一台apache服务器,将www.foo.com和www.bar.com的dns记录指向我的IP地址,而apache足够聪明,可以为每台服务器生成不同的网页。这就是虚拟主机的用途。问题是你没有那样做。每个vhost是主机名和端口的组合。默认vhost的定义如下:

<VirtualHost _default_:443>


这些都是陷阱。因此,如果您想要http流量,请使用httpd.conf中已有的vhost;如果您想要https流量,请使用ssl.conf中的vhost。如果你只是想把事情做完,就不必装腔作势


祝你好运

没错。您可以参考以下讨论作为解释:如果您已经在ssl.conf中使用它,那么不需要在httpd.conf中使用它。
<VirtualHost *:443>