我们在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>
答案 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());