1

我有 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 池的附加规则。

虚拟机托管多个站点,我只想将这个站点的 HTTP 重定向到 HTTPS。我在 Azure 网关上有用于监听器的 www.samplesite.net 的私钥。

如果我直接指向任何 VM,我将成功重定向到 HTTPS。如果我指向网关,我会收到太多重定向错误。

如果我不在服务器上重写,我可以通过网关直接访问 HTTPS 或 HTTP,没有问题。

如果我有端到端加密,为什么会收到此重定向?

编辑:关于使用网关规则重定向流量:

规则按照它们列出的顺序进行处理,并且使用第一个匹配的规则来引导流量,而不管具体性如何。例如,如果您在同一端口上有使用基本侦听器的规则和使用多站点侦听器的规则,则具有多站点侦听器的规则必须列在具有基本侦听器的规则之前,以便多站点侦听器-site 规则按预期运行。

Edit2:如果有人有兴趣,我必须这样做:

RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net
RewriteCond %{HTTP_X_FORWARDED_PROTO} ^http$
RewriteRule ^(.*)$ https://www.samplesite.net%{REQUEST_URI} [L,R=302]
4

1 回答 1

0

我必须检查从网关转发的标头

> RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net 
> RewriteCond %{HTTP_X_FORWARDED_PROTO} ^http$ 
> RewriteRule ^(.*)$ https://www.samplesite.net%{REQUEST_URI} [L,R=302]

https://www.helicontech.com/isapi_rewrite/doc/examples.htm https://stackoverflow.com/a/41512717/7889282

https://sitecoreblog.marklowe.ch/2017/01/using-ip-geolocation-and-ssl-on-azure/

于 2018-05-29T13:39:44.367 回答