SSL 卸载 apache BigIP

SSL 卸载 apache BigIP

我有一个 BigIp,它有两个入口点 HTTP 和 HTTPS,两个入口点都通过 HTTP 协议与我的 apache 服务器进行通信。

HTTPS 证书在BigIP上,并进行SSL Offloading。

问题是在我的 apache 服务器上我有一条如下的重写规则:

RewriteRule ^(/?)$ /fr.html [R=301,L]

如果我使用 https 访问我的网站,该网站会重定向到 http(这并不好)。

我可以在 apache 上强制 https 重定向,但我想通过 http 和 https 访问我的网站。

答案1

据我所知,大致有三种可行的方法。

  • 不要在 Apache 级别进行任何 URL 重新映射,将所有此类逻辑放在 F5 上。F5 知道原始协议并将生成正确的 HTTP(S) URL。

  • 由于您正在执行 SSL 卸载,因此您的实际 Web 服务器不知道原始请求是通过 HTTPS 还是纯 HTTP 发出的。您可以通过在X-Forwarded-ProtoF5 上注入标头来让 Apache(以及您的所有其他应用程序)知道客户端使用的原始协议。

然后您可以进行协议感知重定向:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} https [NC]
RewriteRule  ^(/?)$ https://%{HTTP_HOST}%/fr.html [R=301,L]

RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^(/?)$ /fr.html [R=301,L]
  • 利用 HTTPS 虚拟服务器的 iRule 将任何出现的绝对 URL 重写http://www.example.comhttps://www.example.com

这还有一个额外的好处,当您的网站和网络应用程序包含对http://www.example.com样式表、图像、链接和其他内容的其他绝对引用时,还可以防止出现“不安全内容”警告。

STREAM::expression { @http://<www.example.com>@https://<www.example.com>@ }

编辑:第四个选项当然是不向客户端发送 HTTP 重定向,而是简单地在 Apache 内部替换 URL,换句话说,放弃R旗帜...

答案2

由于您正在卸载 SSL,因此通常更容易“卸载”重定向中的修复,正如@HBruijn 所说,您可以使用 iRule,但您也可以简单地使用与您的 https 虚拟服务器关联的 HTTP 配置文件上的“重定向重写”选项。

这里详细介绍了这两个选项: https://devcentral.f5.com/articles/rewriting-redirects

基本上,在您的个人资料中将“重定向重写”设置为“全部”应该可以工作

相关内容