如何查看通过 HTTPS 访问 IIS 站点时发生的情况

如何查看通过 HTTPS 访问 IIS 站点时发生的情况

有没有办法查看当我从外部网络通过 HTTPS 访问网站时 IIS 8.5 服务器会做什么?它会打开什么、什么文件夹结构、哪个文件?

我之所以问这个问题,是因为当我从外部通过 HTTPS 访问我的网站时,我总是被重定向到 IIS 默认页面,即使我停止了 IIS 中的默认网站并删除了默认情况下位于 inetpub/wwwroot 中的所有 html 文件。当我从内部访问 HTTPS 时,一切正常;如果我通过 HTTP 访问网站,无论是内部还是外部,一切正常。

有没有办法查看服务器在做什么?我可以记录或跟踪某些内容吗?我现在看到的日志没有提供任何有关它为何无法正常工作的信息。

编辑:

这太奇怪了。当我从外部通过 HTTPS 打开网站时,它会打开以下内容:https://mysite.mydomain.com/iis-85.png当我想从内部网络打开这个精确的 URL 时,我收到一个404 - File or Folder not found错误。整个 IIS 上唯一包含此 iis-85.png 的文件夹是这个:C:\Windows\WinSxS\amd64_microsoft-windows-iis-startserver_31bf3856ad364e35_6.3.9600.16384_none_bf87a3597b95c1cd并且我认为它不可能从那里读取数据。

为什么会这样?难道这仍然是缓存的?我尽一切努力更新缓存,删除临时 asp 文件,刷新 DNS,重新启动每个站点、IIS 本身、每个应用程序池。我还能做什么?

编辑:好的,我明白了。HTTPS 已通过防火墙 NAT 重定向到另一台服务器。

答案1

对我来说,这听起来好像外部请求实际上从未到达您的服务器,它们似乎最终到达了不同的服务器,这可以解释为什么会看到您的服务器上不可用的页面。

有几种数据包嗅探方法可以在网络级别上找出这一点,但由于我们在这里讨论的是 IIS,您可以启用http.sys tracing它来跟踪负责处理传入请求的 IIS 底层组件。

摘自我的博客文章

要启动跟踪,请运行: logman.exe start httptrace -p Microsoft-Windows-HttpService 0xFFF -o httptrace.etl -ets 执行一些您想要调查的请求,然后停止跟踪: logman.exe stop httptrace -ets 转换为 csv 文件: tracerpt httptrace.etl -of csv -o httptrace.csv /y 或者最好转换为可以在事件查看器中打开的事件日志文件: tracerpt httptrace.etl -of evtx -o httptrace.evtx /y

答案2

通常,您可以使用跟踪查看 IIS 请求中发生的情况。对于 IIS 8.5,您可以在此处找到说明:

IIS 8.5 中的请求跟踪

您所描述的情况可能是由于绑定不正确而发生的。IIS 根据绑定显示网站内容。如果您在外部使用的域名与内部域名不同,则必须在绑定选项卡中列出它。绑定描述如下:

添加站点绑定

(本文针对的是 IIS 7,但 IIS 8 也差不多)。因此,总结一下,如果您的内部域是“contoso.local”,而外部域是“contoso.com”和“contoso-company.com”,则需要 3 个条目/绑定。对于共享公共端口的 IIS 网站,绑定中的主机名可以确定哪个站点响应请求。

希望这可以帮助!

相关内容