Apache 将 http 请求重写为 https

Apache 将 http 请求重写为 https

我有一个 apache 服务器 v2.2,在 80 上有一个虚拟主机,在 444 上还有一个带 SSL 的虚拟主机。我想重定向所有这种请求:

http://domain.tld:444/dir1
http://domain.tld:444/dir2

(SSL 端口上没有 https)

https://domain.tld:444/dir1
https://domain.tld:444/dir2

为了避免错误 400 Bad request。你知道该怎么做吗?

提前致谢。

答案1

您不能这样做。如果您在端口 444 上启用了 SSL,则没有 SSL 的连接将无法正常工作。

答案2

Apache 无法直接执行此操作。当它侦听端口时,它侦听的是纯 HTTP 流量或 HTTPS 流量,而另一种类型的连接将失败。

然而,一个聪明的应用程序可以尝试检查初始连接数据,决定正在尝试哪种连接,并采取适当的措施。安全组这样做。要使用它,您必须设置两个 Apache 虚拟主机,每个虚拟主机侦听本地主机地址上的不同端口。设置好这些后,您将让 sslh 侦听端口 444,并将 HTTP 和 HTTPS 流量转发到适当的内部端口。

答案3

只需设置您的配置以使用 mod_alias 的重定向:

<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / https://www.example.com/
</VirtualHost >

来源:mod_alias#重定向

相关内容