如何解决在IIS中实施HTTPS,而无需使用缓存不安全的服务器变量
我目前正在使用以下规则在网站上实施https:
<rule name="Enforce HTTPS" enabled="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" ignoreCase="true" pattern="^off$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
问题是我在这种情况下使用的HTTPS服务器变量不是“不会对输出缓存策略造成任何影响”(see full list)的服务器变量列表的一部分。
这是一个问题,原因是在设置了一些失败的请求跟踪规则之后,我意识到某些条目具有以下警告: REWRITE_DISABLED_KERNEL_CACHE
经过研究,我发现一个相关的forum thread提到:
如果URL重写模块中的任何规则,URL重写模块将禁用内核模式缓存 规则集的条件是使用了缓存不安全的服务器变量。的 无论请求的URL是否与 规则模式。
如果性能不是问题,这不是问题,但是站点的运行速度不是那么快,我想知道此缓存问题是否不是问题的一部分。
通过阅读安全变量列表,似乎没有一个包含用于请求的协议,因此这似乎不可能,但我仍然以为以防万一。
解决方法
我们可以绕过HTTP协议使用HTTPS访问网站,然后使用IIS日志查看网站的访问记录,其中每个记录都包含访问的时间消耗。
Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-
version cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2020-04-15 02:50:57 fe80::a4fe:6d79:f2b8:d031%6 GET / - 446 -
fe80::a4fe:6d79:f2b8:d031%6 HTTP/2 Mozilla/5.0+
(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+
(KHTML,+like+Gecko)+Chrome/80.0.3987.163+Safari/537.36
- 403 14 0 2158
最后一个字段指示在一个请求中花费的时间。
我认为仅检查HTTPS服务器变量并重定向URI时,IIS输出缓存不会对IIS网站访问性能产生重大影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。