一、完整过程拆解
(一)你的实际操作步骤(按操作顺序还原)
- 复制原有网站文件 :把之前配置好反向代理的 IIS 网站整个文件夹复制了一份,里面包含了写好转发规则的 web.config 文件(比如指向 localhost:xxx 服务的配置)。
- 配置新的 IIS 网站绑定:基于复制的文件夹,给网站添加了两组绑定:
- 公网 IP 绑定:http://120.46.1xx.6y:8001
- 发现现象与疑惑 :没有手动修改过 applicationHost.config 文件,却发现 http://120.46.1xx.6y:8001 能正常访问,和预期一致。
(二)访问成功的完整后台链路过程(每一步对应什么配置)
用户访问 http://120.46.1xx.6y:8001 时,请求会按以下顺序流转,每一步都对应你之前的配置:
- 外网请求到达网关:用户的请求先发送到你的路由器 / 云平台公网 IP。
- 端口转发生效 :网关中配置的转发规则 公网IP:8001 → 内网IP 192.168.3.81:8001 生效,把请求转发到你的服务器内网 IP 的 8001 端口。
- 防火墙放行请求:你之前给 8001 端口配置的 Windows 防火墙入站规则生效,请求不会被系统拦截,成功进入服务器。
- IIS 匹配到对应网站 :IIS 启动后会自动读取 applicationHost.config 文件,你在 IIS 管理器里添加的两组绑定,已经被自动写入这个文件。IIS 正在监听 192.168.3.81:8001 和 120.46.1xx.6y:8001 两个地址的 8001 端口,收到请求后,直接匹配到你配置的网站。
- 反向代理规则生效 :IIS 把请求交给网站后,读取文件夹里的 web.config 文件,执行里面的转发规则,把请求转发到你配置的 localhost:xxx 服务。
- 内容返回给用户 :localhost 服务处理请求并生成页面内容,返回给 IIS,再由 IIS 转发给外网用户,最终你看到了正常的页面。
二、核心归纳总结
(一)关键误区澄清(解决你的核心疑惑)
|-----------------------------------------------------|--------------------------------------------------------------------------------------------------------|
| 你的疑惑 / 误区 | 纠正说明 |
| 「没手动改 applicationHost.config,怎么会有 8001 的配置?」 | 完全不用手动修改!你在 IIS 管理器里添加 / 修改绑定,系统会自动、安全地把配置写入这个文件,不会遗漏。你没找到配置,只是没定位到对应网站的节点,不是真的没配置。 |
| 「复制网站文件会影响绑定配置吗?」 | 不会!网站文件(包括 web.config)只包含反向代理、静态文件等内容,IIS 的端口绑定配置是独立存在 applicationHost.config 里的,和网站文件夹无关,复制文件不影响绑定效果。 |
| 「两个绑定 192.168.3.81:8001 和 120.46.1xx.6y:8001 会冲突吗?」 | 不会!它们是同一个网站的两个独立入口,共享同一套反向代理规则,只是分别对应内网和外网的请求,访问效果完全一致,不会产生冲突。 |
(二)核心规则归纳(记住这 4 条就够了)
- IIS 绑定自动管理规则
所有在 IIS 管理器里添加的端口绑定,都会自动写入 applicationHost.config,无需手动修改;手动修改这个文件反而容易导致 IIS 服务崩溃,不推荐操作。
- 外网访问的 4 个必要条件(缺一不可)
① 网关 / 云平台端口转发规则正常 ② 服务器防火墙放行对应端口 ③ IIS 绑定配置正确 ④ web.config 反向代理规则生效
- 绑定与反向代理的分工规则
- IIS 绑定(8001 端口):负责「接请求」,告诉 IIS 哪个端口的请求交给哪个网站处理;
- web.config 反向代理:负责「转请求」,告诉网站收到请求后转发到哪个 localhost 服务;
两者是独立配置,不用在 web.config 里写 8001 端口。
-
同一网站多绑定规则
给同一个网站添加多个绑定(不同 IP 同端口),访问效果完全一样,最终都会执行同一个 web.config 里的转发规则,不会出现访问混乱的情况。具体解释
配置网站就2步,文件物理路径定位、内外网IP和端口设定。1原始文件
-

-

-
复制另外文件夹,也是网站文件夹物理路径 、内外网IP定位。


其实在设置8001保存过程中,自动更新了applicationHost.config文件