1

如果我在 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

我认为ssl.conf中使用了443的端口,所以我在httpd.conf中不能使用它。当我在 httpd.conf 中使用 444 或 666 时,我可以启动 httpd。

这是什么原因?

4

1 回答 1

0

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

我的建议是:将 ssl.conf 复制到 ssl.conf.bk (或其他任何内容,以便您有原件供参考)然后编辑 ssl.conf 中的虚拟主机以满足您的需要。

ps:让我备份并解释一下 conf.d 目录,以防某些读者感到困惑。许多项目(不仅仅是 Apache)使用这些目录作为一种模块化配置文件设置的方式。管理员可以将一个 conf 文件放到正确的目录中,然后 apache 会在下次重新加载服务时加载它。我使用配置管理器为我在正确的服务器上删除正确的文件,从而可以根据需要轻松启动更多服务器。

pps:让我再次备份并解释一个虚拟主机(又名“虚拟主机”)。Apache 项目使他们的 Web 服务器足够灵活,可以托管多个域。在这里坚持我。我可以在互联网上放置一个 apache 服务器,并将 www.foo.com 和 www.bar.com 的 dns 记录指向我的 IP 地址,而 apache 足够聪明,可以为每个服务器生成不同的网页。这就是虚拟主机的用途。问题是你没有那样做。每个虚拟主机都是主机名和端口的组合。默认虚拟主机定义如下:

<VirtualHost _default_:443>

或者

<VirtualHost *:443>

这些都是包罗万象的。因此,如果您想要 http 流量,请使用 httpd.conf 中已有的虚拟主机,或者如果您想要 https 流量,请使用 ssl.conf 中的虚拟主机。如果您只想完成任务,则无需花哨。

还有祝你好运!

于 2019-02-21T00:48:23.847 回答