启用 SSL 后 Apache HTTP 无法运行

启用 SSL 后 Apache HTTP 无法运行

我遇到了一个非常奇怪的问题,在 Apache 中启用 SSL 支持后,我只能通过 SSL 访问我的网站,而不能通过 http 访问。

我可以确认 Apache 确实在监听端口 80 和 443(根据 netstat)。此外,Apache 访问日志显示了请求 - 只是通过 http 进入会导致超时,我实际上无法访问内容。就像我说的,通过 https 可以。

这是我的httpd.conf: http://pastebin.com/kG2dPjJ2

这是我的httpd-ssl.conf: http://pastebin.com/thqvjgGJ

有人能发现这些配置有什么问题吗?或者有什么建议吗?

我找了又找,但似乎很少有人经历过同样的事情。

还值得一提的是,我对这些配置和工作设置进行了比较,但没有发现任何问题。

答案1

您正在运行两个独立的 httpd 实例,它们都试图使用相同的日志文件。这意味着其中一个实例将无法写入文件,并且该实例将挂起。

如果要对它们使用同一个文件,则应在同一个实例中运行它们,以将VirtualHostSSL 和非 SSL 区分开。否则,请使用单独的日志文件。

编辑

此外,端口 80 的 httpd.conf 包含以下行:

Include /storage/.xbmc/userdata/addon_data/service.web.lamp/srvroot/conf/extra/httpd-ssl.conf

这意味着您首先要执行 httpd.conf 中该Include行以下的大部分操作。然后执行 httpd-ssl.conf 中的所有操作,之后执行 httpd.conf 中该行以下的所有操作Include。这很可能不是您想要的。

答案2

如果您的系统内核 sendfile 支持损坏,Apache 可能会出现类似症状,特别是发送了标头但没有数据。值得通过实验添加

EnableSendfile Off

到您的配置。

答案3

为了拥有一个“网站”,您需要一个 VHOST(虚拟主机)。

提供的配置文件只有一个用于 SSL (443) 的 vhost。我不确定您要实现什么,但添加类似于以下内容的部分(在 httpd.conf 中)会有所帮助:

<VirtualHost _default_:80> DocumentRoot "/some/place" ServerName www.example.org ServerAdmin [email protected] ErrorLog "/some/place/for/logs/error" TransferLog "/some/place/for/logs/transfer" CustomLog "/some/place/for/logs/access" </VirtualHost>

相关内容