通过配置或代码重写Https

时间:2014-01-24 13:47:30

标签: c# asp.net-mvc iis iis-7.5

在编写像这样的重写规则之间是否存在性能差异

<rewrite>
  <rules>
    <rule name="Redirect to HTTPS" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
    </rule>
  </rules>
</rewrite>

或创建一个http模块并执行类似的操作

public void OnBeginRequest()
{
    if (!httpRequestBase.IsSecureConnection)
    {
        if (httpRequestBase.Url != null)
        {
            httpResponseBase.Redirect(httpRequestBase.Url.ToString().Replace("http:", "https:"));
        }
    }
}

我知道代码将更容易为不同的环境打开和关闭,因此方便可能会影响我。我只是想知道每个请求可能会增加额外的http模块来执行此操作。

1 个答案:

答案 0 :(得分:0)

最初我创建了一个重写模块,这个工作正常。

其他选项

  • HTTP模块
  • 从IIS
  • 配置重写
  • 绑定HTTP网站并在IIS中设置重定向
  • nginx重写

我最终使用nGinx进行重写,因为它更适合作为基础设施的一部分而不是代码本身。