【发布时间】:2018-11-07 12:50:57
【问题描述】:
我有 htaccess 重写规则:
RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
在两个运行 IIS 的 azure vm 上。 我有一个应用程序网关,它有一个后端 Https 池,其中包含两个 azure vm 的服务器证书。
我在网关上有一个多站点 https 侦听器,用于侦听具有特定 URI www.samplesite.net 的网关的 https 流量。 有一个使用 backendHttps 池的附加规则。
VM 托管多个站点,我只想为这个站点将 HTTP 重定向到 HTTPS。我有 Azure 网关上用于监听器的 www.samplesite.net 的私钥。
如果我直接指向任何 VM,我将成功重定向到 HTTPS。如果我指向网关,则会收到太多重定向错误。
如果我不在服务器上重写,我可以通过网关直接转到 HTTPS 或 HTTP,没有问题。
如果我有端到端加密,为什么会收到此重定向?
编辑: 关于使用gateway rules 重定向流量:
规则按照它们列出的顺序进行处理,流量是 使用与特异性无关的第一条规则进行定向。 例如,如果您有一个使用基本侦听器的规则和一个规则 在同一端口上使用多站点侦听器,规则与 多站点侦听器必须在具有基本规则的规则之前列出 侦听器,以便多站点规则按预期运行。
编辑2: 如果有人有兴趣,我必须这样做:
RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net
RewriteCond %{HTTP_X_FORWARDED_PROTO} ^http$
RewriteRule ^(.*)$ https://www.samplesite.net%{REQUEST_URI} [L,R=302]
【问题讨论】:
-
作为 htaccess 规则的替代方案,您可以设置附加到 http 侦听器的规则以重定向到 https 侦听器。这样重定向就会在应用程序网关而不是虚拟机上处理。
-
为了更好地帮助您,您能否分享错误代码或消息。
-
@Jason P 对不起。我还应该提到我在门户网站上尝试过重定向。未触发重定向规则。我读过这些是根据门户中的顺序执行的。不幸的是,我必须删除更广泛的规则。删除其他规则和侦听器会破坏已经存在的其他站点。至少在我可以再次添加它们之前。此外,每次我希望另一个特定站点重定向到 Https 时,我都必须删除广泛的规则并在多站点域特定规则之后重新添加它们。
标签: .htaccess azure azure-application-gateway