游客发表

iis是什么

发帖时间:2026-10-17 05:11:38

IIS 是 Internet Information Services 的缩写,微软自家出的 Web 服务器软件。你访问一个 .asp 或 .aspx 结尾的网站,后端大概率就是它在干活。这东西最早是跟着 Windows NT 4.0 在 1996 年一起发布的,那时候网景的 Netscape Server 还如日中天,微软为了抢市场,直接把 IIS 塞进操作系统里卖,这一招后来成了它反垄断官司的导火索之一。

我头一回跟 IIS 打交道是零几年帮人调一个企业内网。那台 Windows Server 2003 上跑着 IIS 6.0,管理界面叫“Internet 信息服务 (IIS) 管理器”,打开之后左边一棵树,网站、应用程序池、虚拟目录,看着挺规整。但真出问题的时候,光看那个界面根本不够,得去翻 %SystemRoot%\System32\LogFiles\W3SVC1 下面的日志,一行行看哪个请求返回了 500。那时候 IIS 的日志格式还是 W3C 扩展日志,字段之间用空格隔开,跟现在差不多。

IIS 跟 Apache、Nginx 最大的不同,是它跟 Windows 绑得太紧。身份验证直接走 Windows 账户体系,NTFS 权限就是网站目录的权限,不用另配一套用户系统。这对企业内网是好事,管理员不用再记一套密码。但反过来,你要在非 Windows 机器上跑 IIS,基本没戏。它就是个 Windows 专属组件,装的时候得去“启用或关闭 Windows 功能”里勾选,或者用 PowerShell 敲 Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole。

版本迭代里有两个节点值得说。IIS 7.0 随 Vista 和 Server 2008 出来,把核心拆成了模块,请求处理管道变成托管代码和本机代码可以混着跑,配置也从 metabase 换成了 XML 文件 applicationHost.config。这个改动让 IIS 终于能跟 Apache 的模块化掰手腕了。到了 IIS 10,也就是 Windows Server 2016 和 Win10 之后,基本就是修修补补,加了对 HTTP/2 的支持,容器化方面搞了个 Windows 容器里的 IIS 镜像,但说实话,在 Docker 和 K8s 的世界里,IIS 的存在感远不如 Nginx。

有个细节挺有意思。IIS 默认会返回一个 404 页面,上面写着“HTTP Error 404.0 - Not Found”,下面列着“可能的原因”和“你可以尝试的操作”。这页面是微软工程师写的,语气像在教用户修电脑。很多运维看到这个就知道该去查处理程序映射或者文件权限了。相比之下 Nginx 的 404 就一行字,冷冰冰的。

性能上,IIS 处理静态文件不差,但大家更常用它跑 ASP.NET。应用程序池是它的一个特色设计——每个池可以独立配置 .NET 版本、管道模式、回收策略。一个池崩了不影响另一个,这比 Apache 的 prefork 模型在隔离性上要细。但配置错了也麻烦,比如 32 位和 64 位模式搞混,或者托管管道模式选错,网站直接起不来,事件查看器里一堆错误。

现在新项目用 IIS 的少了。微软自己推 ASP.NET Core 的时候,官方推荐部署在 Kestrel 上,前面放 Nginx 或 IIS 做反向代理。IIS 的角色从“主力 Web 服务器”慢慢变成了“Windows 上的反向代理和进程管理器”。但老系统还在跑,很多政府、银行、制造业的内网里,IIS 6.0 甚至 IIS 5.0 都还活着。你没法忽视它,因为改造成本太高,而且它确实还能用。

所以问 IIS 是什么,答案取决于你什么时候开始接触 Web。对 2000 年代入行的人来说,IIS 就是那个在 Windows 上点几下就能建站的工具。对现在用 Linux 容器的人,IIS 可能只是简历上偶尔看到的一个词。它没消失,只是退到了它最该待的地方——那些跑着 .NET Framework 老应用的 Windows 服务器里。

    热门排行

    友情链接