Apache 在同一端口上应答 HTTP 和 HTTPS

Apache 在同一端口上应答 HTTP 和 HTTPS

我正在尝试让 apache 从 http 重定向到 https,但我希望它们都位于同一个端口(20100,但我怀疑这是否重要)。基本上发生了什么这里但我这样做不是为了 webmin。目前我已将其配置为提供 HTTPS 服务,当我使用 HTTP 访问时,我得到:

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.

似乎有很多类似的问题,但我找不到真正回答我的问题的问题。

答案1

Apache 无法做到这一点。Apache 无法在同一端口上运行 HTTPS 和 HTTP。

我知道有几种端口多路复用器的设计目的是HTTPS/OpenVPN 和SSH在同一端口上运行,但这些需要额外的软件。

答案2

可以通过重定向到自定义“400 - 错误请求”页面并使用重写规则修改重定向来实现此目的。在以下示例中,我请求

http://test.mydomain.com:27000

并重定向至

https://test.mydomain.com:27000

有一个虚拟主机。

代码:

ErrorDocument 400 /

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}:27000/$1 [R,L]

或者您直接重定向到该页面的 HTTPS 版本。

代码:

 ErrorDocument 400 https://test.mydomain.com:27000

但您将失去在真正的“错误请求”页面上重定向的能力。

相关内容