资讯动态

Windows Server 2022 Web服务器搭建:IIS与DNS配置实战

发布时间:2026/10/24 14:50:44 来源:尧图企业网站定制
简介这份文档面向 IT 运维人员与 Windows 服务器初学者系统讲解 Windows Server 2022 环境下 Web 服务器的搭建与配置流程帮助读者从零完成服务器安装到网站上线的完整实践。内容围绕服务器安装、功能测试、网站挂载与域名解析四大环节展开涵盖安装介质准备、语言时区选择、磁盘分区、网络与硬件测试、网站目录创建与素材拷贝、端口与域名配置以及 DNS 服务器安装和解析记录设置等关键知识点并附有总结梳理整体步骤脉络。资源包共 1 个 docx 文件约 1016KB以图文文档形式呈现便于按章节对照操作。目前已有 2767 人学习下载适合需要快速上手 Windows 服务器建站、巩固基础配置技能或用于教学演示的读者参考。1. 从一台裸机到能访问的站点Windows Server 2022 Web 服务器搭建到底在做什么手里刚拿到一台装了 Windows Server 2022 的机器远程桌面连上去桌面干干净净浏览器打开是空的IIS 没装DNS 没配网站文件还在本地压缩包里躺着。这时候要做的不是背概念而是把一条链路打通系统装好、IIS 角色装上、站点目录挂上去、端口和防火墙放行、域名能解析到这台机器的 IP。整条链路里任何一环断了浏览器就是打不开而且报错信息往往指向不了真正的问题点。这份资源围绕的就是这条链路从服务器安装、功能测试、站点挂载到 DNS 域名解析四段式推进适合刚接触 Windows 服务器运维的从业者也适合需要在一台内网机器上快速把静态站或测试站跑起来的人。下面按我实际拆装的顺序讲参数和坑都落到具体位置。2. 装系统与装 IIS角色选型、分区和第一轮连通性验证2.1 安装介质与安装类型的选择逻辑Windows Server 2022 的安装介质常见两种来源批量授权渠道拿到的 ISO或者评估版 ISO。评估版装完有使用期限到期会限制登录做长期测试站之前先确认授权状态别等站点跑了一周才发现系统要到期。安装类型上完整安装带图形界面Desktop Experience服务器核心安装只有命令行。做 Web 服务器如果后续要频繁用 IIS 管理器点配置、看日志、改绑定完整安装省事如果追求更小的攻击面和更低的资源占用核心安装也能跑 IIS但所有配置都得走 PowerShell 或远程管理工具新手容易卡在“找不到图形入口”上。我一般给第一次搭的人选完整安装把链路跑通之后再考虑精简。分区这一步有个血泪经验系统盘别只给 40G。IIS 的日志默认往C:\inetpub\logs写站点访问量一上来日志增长比想象中快再加上 Windows 更新缓存系统盘很快见红。常见做法是系统盘 80G 起步站点文件单独放一块数据盘日志目录也改到数据盘上。安装过程中选择“自定义安装”把数据盘分区格式化好装完系统再挂载。安装完成后第一件事不是急着装 IIS而是确认网络。用ipconfig /all看 IP、网关、DNS 是否按规划配好用ping测网关通不通用Test-NetConnection测外网端口。这一步没做扎实后面站点起不来会误以为是 IIS 的问题实际是网络层就没通。2.2 用 PowerShell 装 IIS 角色并验证图形界面装 IIS 的路径是“服务器管理器 → 添加角色和功能 → Web 服务器IIS”一路下一步。但实际运维里我更倾向用 PowerShell因为可复现、可脚本化换一台机器直接粘贴就能跑。下面这段是装 IIS 核心角色加常用功能的最小集合# 安装 IIS Web 服务器角色及常用子功能 Install-WindowsFeature -Name Web-Server -IncludeManagementTools -IncludeAllSubFeature # 确认安装结果RestartNeeded 应为 No Get-WindowsFeature -Name Web-Server | Select-Object Name, InstallState # 启动 W3SVC 服务并设为自动 Set-Service -Name W3SVC -StartupType Automatic Start-Service -Name W3SVC # 查看 80 端口监听状态 Get-NetTCPConnection -LocalPort 80 -State Listen-IncludeManagementTools会带上 IIS 管理器-IncludeAllSubFeature把 ASP.NET、静态内容、目录浏览、HTTP 重定向这些子功能一起装上。生产环境不建议无脑全装按站点技术栈裁剪比如纯静态站不需要 ASP.NET 和 CGI少装一个功能就少一块攻击面。Get-NetTCPConnection那条是验证的关键如果 80 端口没有 Listen 记录说明 W3SVC 没起来或者被别的进程占了先查服务状态再查端口占用。装完 IIS默认站点Default Web Site会指向C:\inetpub\wwwroot本机浏览器访问http://localhost应该能看到 IIS 欢迎页。这一步能打开说明 IIS 本身没问题问题只可能出在站点配置或防火墙上。如果本机能开、别的机器打不开九成是防火墙没放行下一节细说。2.3 功能测试网络、硬件、系统三层验证原文把功能测试拆成网络连接、硬件设备、操作系统三块这个顺序是对的但每块要落到具体命令上才有意义。网络层用Test-NetConnection -ComputerName 目标IP -Port 80从客户端测比在服务器上ping自己更有说服力硬件层看事件查看器里系统日志有没有磁盘或网卡的告警服务器硬件问题往往先在日志里冒头系统层用Get-EventLog -LogName System -EntryType Error -Newest 20扫一遍最近的错误事件装完系统就有大量报错的话先解决再往下走。提示功能测试阶段就把远程桌面、防火墙规则、时间同步这几项一起确认掉。时间不同步会导致后续 HTTPS 证书校验失败这个坑在只做 HTTP 测试时完全看不出来。3. 挂载站点与端口配置目录权限、绑定信息和防火墙放行3.1 站点目录规划与 NTFS 权限把网站素材拷到服务器上第一步是定目录。我不建议直接往C:\inetpub\wwwroot里塞默认站点留着做对照新站单独建目录比如D:\sites\demo。目录建好后把素材解压进去确认入口文件是index.html或default.aspx这类 IIS 默认文档列表里有的名字否则访问根路径会 403 或目录列表。权限是这一节最容易翻车的地方。IIS 的工作进程身份是IIS_IUSRS组和DefaultAppPool应用池身份站点目录必须给这两个身份读权限纯静态站给读就够需要写日志或上传文件的目录再单独给修改权限。用 icacls 一条命令搞定# 给站点目录授予 IIS_IUSRS 读和执行权限 icacls D:\sites\demo /grant IIS_IUSRS:(OI)(CI)(RX) /T # 如果站点需要写权限上传、缓存目录单独给修改权限 icacls D:\sites\demo\uploads /grant IIS_IUSRS:(OI)(CI)(M) /T # 查看当前权限确认继承关系 icacls D:\sites\demo(OI)(CI)表示对象继承和容器继承RX是读加执行M是修改。/T递归应用到子目录和文件。常见错误是只给了目录权限没给文件权限或者拷贝素材时用了管理员账户导致文件所有者不对IIS 读不到。拷完文件后跑一遍icacls确认比事后看 401.3 报错再回头查省时间。3.2 新建站点、绑定端口与主机头IIS 里新建站点有三种入口IIS 管理器图形界面、New-WebSite命令、直接改applicationHost.config。图形界面适合一次性操作命令行适合批量。新建站点时三个关键参数物理路径、绑定信息、应用程序池。绑定信息里 IP 填“全部未分配”或具体网卡 IP端口默认 80主机头填域名没有域名就留空。端口不能重复使用这条原文点到了但没说透。同一台服务器上两个站点不能绑同一个 IP 加同一个端口加同一个主机头三者完全一致就会冲突IIS 启动站点时报“另一个站点正在使用该绑定”。解决办法有两个换端口或者用主机头区分。主机头是 HTTP 请求头里的 Host 字段IIS 靠它把请求分发到不同站点所以a.example.com和b.example.com都绑 80 端口、同一个 IP只要主机头不同就不冲突。没有域名只有 IP 访问的场景就只能换端口比如 8080。# 新建应用程序池.NET CLR 版本按站点技术栈选 New-WebAppPool -Name demoPool Set-ItemProperty -Path IIS:\AppPools\demoPool -Name managedRuntimeVersion -Value v4.0 # 新建站点绑定 80 端口主机头留空表示按 IP 访问 New-WebSite -Name demo -PhysicalPath D:\sites\demo -ApplicationPool demoPool -Port 80 -HostHeader -Force # 查看站点状态和绑定 Get-WebSite -Name demo | Select-Object Name, State, PhysicalPath Get-WebBinding -Name demo-Force在站点已存在时覆盖配置调试阶段反复改绑定很方便生产环境慎用。managedRuntimeVersion设成v4.0对应 .NET Framework 4.x纯静态站可以设成空字符串表示无托管代码省掉 CLR 启动开销。建完站点后State应该是Started如果是Stopped先看应用程序池是否启动再看绑定是否冲突。3.3 防火墙放行与外部访问验证本机http://localhost能开、局域网其他机器打不开这是最高频的“站点挂了”误判。Windows Server 2022 默认开启 Windows Defender 防火墙入站规则里 IIS 的 80 端口规则在装 IIS 角色时通常会自动创建但如果你改了端口或者用了非标准端口规则不会自动跟着变。手动放行# 放行 80 端口入站IIS 装好后一般已存在确认一下 New-NetFirewallRule -DisplayName HTTP-80-In -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow # 非标准端口示例放行 8080 New-NetFirewallRule -DisplayName HTTP-8080-In -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow # 查看已生效的入站规则 Get-NetFirewallRule -Direction Inbound -Enabled True | Where-Object DisplayName -like HTTP*放行之后从客户端机器用Test-NetConnection -ComputerName 服务器IP -Port 80验证TcpTestSucceeded为 True 才算通。如果还是 False按“服务是否监听 → 防火墙规则是否命中 → 网络设备是否拦截”三层往下查别一上来就重装 IIS。注意云主机环境除了系统防火墙还有安全组或网络 ACL 这一层。系统防火墙放行了但安全组没开端口外部照样访问不了这个坑在本地虚拟机测试时完全遇不到。4. DNS 域名解析正向区域、A 记录与解析验证4.1 装 DNS 角色与新建正向查找区域站点能用 IP 访问之后下一步是让域名能解析到这台机器。原文把 DNS 放在最后一步顺序合理因为 DNS 配错了只影响域名访问不影响 IP 访问排查时可以隔离变量。装 DNS 角色# 安装 DNS 服务器角色 Install-WindowsFeature -Name DNS -IncludeManagementTools # 确认 DNS 服务运行 Get-Service -Name DNS | Select-Object Name, Status, StartType装完 DNS 角色服务默认自动启动。接着建正向查找区域区域类型选“主要区域”如果这台 DNS 只服务内网勾掉“将新区域存储在 Active Directory 中”的选项没有域环境也勾不了区域名称填你的域名比如demo.local。建完区域后新建 A 记录主机名填www或IP 填服务器地址。# 新建正向查找区域非 AD 集成 Add-DnsServerPrimaryZone -Name demo.local -ZoneFile demo.local.dns # 新建 A 记录www.demo.local - 服务器 IP Add-DnsServerResourceRecordA -Name www -ZoneName demo.local -IPv4Address 192.168.1.10 # 新建主机记录 指向同一 IP根域名访问 Add-DnsServerResourceRecordA -Name -ZoneName demo.local -IPv4Address 192.168.1.10 # 查看区域内的记录 Get-DnsServerResourceRecord -ZoneName demo.local-ZoneFile指定区域文件落盘的名字不指定会用默认命名。A 记录的-Name参数里代表区域根www代表www.demo.local。如果站点绑定了主机头主机头值必须和 A 记录的主机名一致否则 IIS 收到请求后匹配不到站点返回 404 或默认站点页面。4.2 客户端 DNS 指向与解析验证DNS 服务器配好客户端得把 DNS 指向这台服务器才能生效。客户端网卡设置里首选 DNS 填服务器 IP然后清缓存验证# Windows 客户端清 DNS 缓存 ipconfig /flushdns # 用 nslookup 指定 DNS 服务器查询排除本地缓存干扰 nslookup www.demo.local 192.168.1.10 # 用 Resolve-DnsName 看完整解析链路 Resolve-DnsName -Name www.demo.local -Server 192.168.1.10 -Type Anslookup输出里Address后面跟的应该是服务器 IP如果返回Non-existent domain检查区域名和记录名是否拼错如果返回的是别的 IP检查客户端是不是还指着旧 DNS 或者缓存没清。解析通了之后浏览器访问http://www.demo.local能出站点页面整条链路才算闭环。提示内网测试用.local这类后缀没问题但如果这台 DNS 要对外服务区域名必须是真实注册的域名且上游要有对应的 NS 记录指向否则公网解析不到。内网 DNS 和公网 DNS 是两套体系别混着配。5. 排错清单与上线前的自检习惯5.1 五条高频踩坑记录现象浏览器返回 401.3提示未授权。原因站点目录的 NTFS 权限没给IIS_IUSRS或者文件是从别的机器拷贝过来、所有者是旧账户IIS 工作进程读不到。 解决对站点目录跑icacls授予IIS_IUSRS:(OI)(CI)(RX)递归应用到所有子项再刷新页面。现象本机能访问局域网其他机器超时。原因Windows 防火墙没放行对应端口或者云主机安全组没开。 解决先用Get-NetTCPConnection -LocalPort 80 -State Listen确认服务在监听再用New-NetFirewallRule放行端口最后从客户端Test-NetConnection验证。三层逐层排除别跳步。现象新建站点启动失败事件日志报绑定冲突。原因同一 IP 加同一端口加同一主机头已被其他站点占用。 解决Get-WebBinding列出所有站点绑定找出重复项改端口或改主机头。主机头区分是首选换端口会影响用户访问习惯。现象域名解析返回正确 IP但浏览器访问落到默认站点。原因站点绑定的主机头和 DNS 记录的主机名不一致IIS 匹配不到具体站点回落到Default Web Site。 解决核对Get-WebBinding -Name demo里的 HostHeader 值和 A 记录的-Name值两者必须完全一致包括大小写习惯上保持一致更稳妥。现象站点跑一段时间后系统盘爆满IIS 无响应。原因IIS 日志默认写在系统盘访问量大时日志文件快速增长。 解决在 IIS 管理器里把日志目录改到数据盘或者用Set-WebConfigurationProperty改system.applicationHost/sites下的logFile目录同时清理历史日志。5.2 上线前的自检清单每次把站点交付出去之前我会固定跑一遍下面这组检查五条命令覆盖服务、端口、绑定、权限、解析五个维度# 1. 站点和应用池状态 Get-WebSite | Select-Object Name, State, PhysicalPath Get-WebAppPoolState -Name demoPool # 2. 端口监听 Get-NetTCPConnection -LocalPort 80 -State Listen # 3. 绑定信息 Get-WebBinding -Name demo | Select-Object protocol, bindingInformation # 4. 目录权限 icacls D:\sites\demo | Select-String IIS_IUSRS # 5. DNS 解析 Resolve-DnsName -Name www.demo.local -Server 192.168.1.10 -Type A这五条全绿站点基本不会在交付后立刻出问题。看起来繁琐但比起被叫去现场排查“为什么打不开”五分钟的自检划算得多。从那以后我每次挂完站点、配完 DNS都强制走一遍这套检查再收工翻车的次数明显少了。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑