有没有办法查看当我从外部网络通过 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 根据绑定显示网站内容。如果您在外部使用的域名与内部域名不同,则必须在绑定选项卡中列出它。绑定描述如下:
(本文针对的是 IIS 7,但 IIS 8 也差不多)。因此,总结一下,如果您的内部域是“contoso.local”,而外部域是“contoso.com”和“contoso-company.com”,则需要 3 个条目/绑定。对于共享公共端口的 IIS 网站,绑定中的主机名可以确定哪个站点响应请求。
希望这可以帮助!