IIS 7.5应用程序初始化(预热)和HTTPS

时间:2013-09-26 16:31:24

标签: iis iis-7 iis-7.5

我们已经使用IIS 7.5的应用程序初始化模块已经有一段时间了,而且它总是运行良好。

但是,我们刚刚开始实施SSL,它似乎与热身产生了冲突。我做了很多研究,但到目前为止还没有解决方案。

基本上问题是初始化模块不遵循重定向。我们必须为网站的某个部分启用http,但我们会将所有其他HTTP访问重定向到其HTTPS等效项。我已经使用重写规则解决了这个问题,该规则向https页面抛出302。初始化接收到302,但只是忽略它。

我尝试过的解决方案:

APP_WARMING_UP服务器变量

这个最有意义。只要{APP_WARMING_UP}返回1,我就可以简单地使重写规则忽略每个请求。根据文档,只要初始化仍在运行,就会将其设置为1。遗憾的是,这根本不起作用,因为{APP_WARMING_UP}只是一直返回一个空字符串。也许这是7.5的限制? (请参阅下面的重写规则。)

将初始化页面更改为HTTPS版本

目前它的配置如下:

    <applicationInitialization remapManagedRequestsTo="Warmup.htm" skipManagedModules="true" doAppInitAfterRestart="true">
        <add initializationPage="/WarmUp?id=1" />
    </applicationInitialization>

我尝试将网址更改为“https:// {HTTP_HOST} / Login / WarmUp?id = 1”,甚至用绝对地址替换{HTTP_HOST},但这两种配置似乎都完全禁用了应用程序初始化。它甚至不再提出页面请求了。

这是关于模块的文档:

http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization

这是我的重写规则,它基本上是整个考验的罪魁祸首。这是唯一一个。

<rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{APP_WARMING_UP}" pattern="1" negate="true" />
        <add input="{REQUEST_URI}" pattern="/services" negate="true" />
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" logRewrittenUrl="true" />
    <serverVariables>
        <set name="SKIP_MANAGED_MODULES" value="0" />
    </serverVariables>
</rule>

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:12)

可能帮助。该模块似乎不适用于需要SSL的站点。见this KB issue。我猜这个模块是一个http请求,而不是https。

您可能想要创建一个允许http的页面,但不会重定向到https。