IIS 站点、应用、虚拟目录与应用池:四层模型
分清 site/application/virtual directory/app pool,在 8080 建实验站点,并有意识地选择隔离边界。
测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1- 版本号
- 26100.33650
- 版本
- Standard / Datacenter
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 测试机
- IIS Manager UI 参考:VM 361 Windows 11 26H2;Lab 站点 :8080;Server 2025 cmdlet 为 E1
- 页面类型
- 概念
四个不同的东西:
| 对象 | 是什么 | 自己的绑定? | 自己的应用池? |
|---|---|---|---|
| 站点(Site) | 一个 Web 端点:绑定 + 根目录 + 应用池 | 有 | 有 |
| 应用(Application) | 站点内的路径段(如 /shop) |
无(继承站点绑定) | 有 |
| 虚拟目录 | 映射到 URL 路径的文件夹 | 无 | 无 |
| 应用池 | 工作进程边界 | 无 | — |
不同主机名/端口用站点;同一主机下独立应用用应用;纯静态内容且不需要独立进程才用虚拟目录。
VM 361 的 IIS 管理器显示:
Default Web Site,id 1,http/*:80:Lab,id 2,http/*:8080:,根C:\inetpub\lab,应用池labpool
用 PowerShell(WebAdministration 模块)创建:
Import-Module WebAdministrationNew-Item -ItemType Directory -Force C:\inetpub\lab | Out-NullNew-WebAppPool -Name 'labpool'New-WebSite -Name 'Lab' -PhysicalPath 'C:\inetpub\lab' -Port 8080 -ApplicationPool 'labpool'或用 appcmd:
appcmd add apppool /name:labpool /managedRuntimeVersion:""appcmd add site /name:Lab /physicalPath:C:\inetpub\lab /bindings:"http/*:8080:"appcmd set app "Lab/" /applicationPool:labpoolmanagedRuntimeVersion:"" 是 No Managed Code,对静态站或反代 Node/Python 是正确的。应用需要 .NET Framework 才用 v4.0。
New-WebApplication -Site 'Lab' -Name 'shop' -PhysicalPath 'C:\apps\shop' -ApplicationPool 'shoppool'得到 http://host:8080/shop,有自己的应用池。父站点的 web.config 仍会继承,除非子应用覆盖。这个继承有用,也是“根路径正常、/shop 不正常”的常见来源。
加一个虚拟目录
Section titled “加一个虚拟目录”New-WebVirtualDirectory -Site 'Lab' -Name 'docs' -PhysicalPath 'D:\StaticDocs'/docs 映射文件夹,但用父应用的应用池。它不是隔离边界。
Get-Website | Select-Object Name, State, PhysicalPath, ApplicationPoolGet-WebApplication -Site 'Lab'Get-WebVirtualDirectory -Site 'Lab'Invoke-WebRequest http://localhost:8080/ -UseBasicParsing | Select-Object StatusCode再从允许网段的另一台机器测;只测 localhost 不能证明防火墙/绑定正确。
- 绑定冲突: 两个站点同一 IP:端口,没有主机头/SNI。IIS 启动一个,另一个失败。
- 应用池错: 静态站放
DefaultAppPool还加载 .NET,增加无谓攻击面。 - 虚拟目录权限: 应用池身份需要对目标文件夹有 NTFS 读权限,不是 IIS“连接为”就够。
- 嵌套配置: 父
web.config可能挡住子应用;读 500.19,不要直接删配置。 - 默认站点还开着: 未绑定主机名的请求可能落到它。
UI 来自 Windows 11 26H2。cmdlet 和对象模型与 Server 2025 同族,但 Server 角色安装仍是 E1;Server 2025 VM 复现后再升级证据等级。

