在Azure中将HTTP重定向到HTTPS(使用负载均衡器)

时间:2016-10-12 00:40:01

标签: azure url-rewriting load-balancing

我们在Azure中有两个负载均衡的Web服务器。 我们刚刚在这些azure网站上安装了SSL,将其转换为HTTPS。

现在我们希望任何以HTTP身份进入的请求都应该更改/重定向到HTTPS连接。

所以,我测试我在本地机器上创建了一个已发布的网站,然后添加了自签名 获得安全站点的SSL证书。然后我使用URL重写将我的HTTP站点指向HTTPS。 我在Web.config中使用过它。

这在我当地发布的网站上完美运行。

但是这在Azure服务器上失败并且给我一个内部服务器错误。

有什么想法吗?

我在Web.config中使用以下内容进行URL重写

<rewrite>
    <rules>     
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
            <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="Off" />
                    <add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="SeeOther" />
        </rule>         
    </rules>
</rewrite>

1 个答案:

答案 0 :(得分:1)

尝试此操作,取自How to force HTTPS using a web.config file

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to https" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

或者,如果您的应用程序是MVC,您可以使用过滤器实现此目的 - 下面将在您的应用程序的设置(或web.config)中查找设置,并确保在启用了RequireHttps&#39 ; s设置为true - 您可以通过使用[RequireHttps]属性声明来注释控制器来执行相同操作。

  string requireHttps = ConfigurationManager.AppSettings["RequireHttps"];
  if (string.IsNullOrEmpty(requireHttps) || string.Compare(requireHttps, "false", true)!=0)
    filters.Add(new RequireHttpsAttribute());