在 Windows Server 2019 环境下配置 IIS 站点、本地端口服务、反向代理及内外网访问、多站点多服务部署

一、文档前言(结合实际实操问题)

本文基于 Windows Server 2019 真实服务器环境(内网IP:192.168.3.81、公网IP:120.46.xxx.yy、本地服务端口:8008/8009、IIS默认端口:80),从零讲解 IIS站点搭建、本地私有端口服务运行、反向代理配置、内外网访问打通、多站点多服务共存部署 全套实操流程。

同时针对实操中出现的真实报错问题做专项解析:

  • 正常现象 :公网访问 http://120.46.xxx.yy 可正常加载诗词系统页面(反向代理生效)
  • 报错现象 :公网直接访问http://120.46.xxx.yy:8008 提示「网页解析失败,可能是不支持的网页类型,请检查网页或稍后重试」

文档兼顾实操步骤、底层原理、报错排错、场景规则、误区纠正,可直接用于项目部署、日常运维与问题排查。

二、基础网络核心概念(配置前置认知)

(一)三类IP地址核心特性与使用规则

本次部署涉及三类IP地址,三者分工明确、不可混用,是所有配置的基础:

  1. 内网IP 192.168.3.81
  • 属性:服务器物理网卡真实配置地址,仅局域网内生效
  • 权限:支持IIS直接绑定、局域网设备直接访问
  • 限制:公网用户无法直接访问该IP
  1. 公网IP 120.46. xxx.yy
  • 属性:网关/云平台对外暴露地址,非服务器本机网卡IP
  • 权限:全网可访问,是外网用户唯一入口
  • 限制:无法在IIS中直接绑定,必须依靠端口转发映射到内网IP
  1. 回环地址 localhost/127.0.0.1
  • 属性:系统虚拟私有地址,仅用于服务器本机内部通信
  • 权限:仅服务器本机可访问,局域网、外网默认完全无法直连
  • 用途:运行前端开发调试服务、本地私有接口(8008/8009服务均属于此类)

(二)端口运行底层铁律(无冲突部署核心)

端口是服务的通信出入口,所有部署必须遵守以下两条硬性规则,否则必然报错冲突:

  1. 规则1:单一「IP+端口」组合,仅允许一个程序占用例如 192.168.3.81:80 被IIS占用后,其他程序无法监听该组合,直接启动失败。
  1. 规则2:端口号相同、监听IP不同,完全无冲突例如 localhost:8008(本机私有)和192.168.3.81:8008(内网公开),端口一致但监听地址不同,可同时运行、互不干扰。

补充:80、443为系统默认放行通用端口;8008、8009等自定义端口,系统默认拦截外网请求。

三、两类8008/8009服务本质区分(核心报错根源)

实操中存在两个极易混淆的同端口服务,也是 公网8008端口解析报错的核心原因,二者完全独立、用途不同:

|--------|-------------------------------|------------------------------|
| 对比维度 | 脚本启动本地服务(localhost:8008/8009) | IIS托管站点服务(192.168.3.81:8008) |
| 启动方式 | 黑窗口脚本/命令行启动,临时调试服务 | IIS系统托管,可开机自启,正式服务 |
| 监听范围 | 仅本机localhost,私有封闭服务 | 内网192.168.3.81,对外公开服务 |
| 外网访问权限 | 默认完全禁止外网直连,无法直接访问 | 配置转发+防火墙后可外网访问 |
| 页面内容 | 前端开发实时编译动态内容 | 服务器本地静态文件内容 |
| 核心用途 | 本地开发、功能调试 | 线上正式对外访问 |

(三)公网8008端口报错专属解析

报错场景 :访问 120.46.xxx.yy:8008 网页解析失败

根本原因

  1. 8008是本地私有服务端口,仅支持本机访问,外网直接请求无法解析私有服务内容;
  1. 未通过IIS反向代理中转,外网裸连localhost私有服务端口,协议与页面类型不匹配,触发解析失败;
  1. 80端口可正常访问,是因为经过IIS反向代理中转,并非端口直接打通。

结论所有localhost私有服务,必须通过IIS反向代理对外暴露,禁止外网直接访问端口

四、外网访问完整链路与配置条件

外网成功访问服务器服务,必须同时打通三道关卡,缺一不可,这是所有外网访问配置的核心准则:

完整链路:外网浏览器 → 公网网关端口转发 → Windows防火墙入站放行 → 目标服务正常监听运行

(一)各关卡作用说明

  1. 网关/云平台端口转发:将公网IP端口请求,转发到服务器内网对应IP和端口,无规则则请求直接丢弃;
  1. Windows防火墙:系统安全拦截,仅默认放行80/443端口,自定义端口需手动放行;
  1. 目标服务状态:IIS站点、本地端口服务必须正常启动监听。

(二)80端口正常访问原因(当前可用场景)

  1. 网关已配置规则:公网80端口 → 内网192.168.3.81:80;
  1. 防火墙默认放行80标准端口;
  1. IIS 80端口站点正常运行,且配置了反向代理。

(三)自定义端口外网访问实操步骤(8008/8009通用)

  1. 步骤1:配置网关端口转发路由器/云平台安全组新增规则:外部端口8008、内部IP192.168.3.81、内部端口8008、协议TCP。
  1. 步骤2:配置防火墙入站规则Windows Defender防火墙→高级设置→入站规则→新建规则:端口TCP 8008,允许所有网络连接,命名保存。
  1. 步骤3:通过IIS反向代理间接访问禁止外网直接访问8008端口,通过IIS站点转发,实现外网正常访问私有服务。

五、IIS反向代理核心配置(80端口访问本地服务的关键)

(一)反向代理定义与作用

反向代理是IIS的流量中转功能:IIS不直接读取静态文件,而是接收外网请求后,自动转发给本机localhost私有服务,再将服务返回的页面内容回传给外网用户。

核心价值:对外隐藏私有端口服务、统一80端口访问、解决外网无法直连localhost的问题。

(二)前置依赖组件

IIS必须提前安装两个组件,否则无法使用反向代理:URL重写、应用请求路由(ARR)。

(三)核心配置文件与代码解读

代理规则存储在站点根目录 web.config 文件中,仅对当前站点生效,各站点规则独立互不干扰

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| xml <rewrite> <rules> <rule name="反向代理规则" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://localhost:8008/{R:1}" /> </rule> </rules> </rewrite> |

关键逻辑:

  • 写 8008 → 转发到localhost:8008服务
  • 写 8009 → 转发到localhost:8009服务
  • IIS无自动识别功能,写哪个端口就访问哪个端口,不会自动切换、乱匹配

(四)完整访问流转链路

外网访问 120.46.xxx.yy → 网关转发至192.168.3.81:80(IIS) → IIS按配置转发至localhost:8008 → 本地服务返回页面 → IIS回传给外网用户。

(五)修改代理目标端口方法

如需切换8008/8009服务,无需修改IIS绑定,仅需两步:

  1. 启动对应localhost端口服务(8008/8009可共存);
  1. 修改web.config中端口号并保存,刷新即可生效。

六、多本地服务+多IIS站点全场景部署规则

通用前置铁律:

  1. 多IIS站点禁止同IP同端口,必然端口冲突;
  1. 多localhost不同端口服务(8008/8009)可同时启动,完全无冲突;
  1. 每个IIS站点代理规则独立,互不影响。

场景1:单IIS站点(80端口)+ 多本地服务

8008、8009同时启动,IIS仅读取配置指定的端口,配置8008则展示8008内容,配置8009则展示8009内容,不会混乱。

场景2:双IIS站点+双本地服务(推荐生产方案)

站点1:192.168.3.81:80 → 代理localhost:8008(主业务)

站点2:192.168.3.81:81 → 代理localhost:8009(测试业务)

效果:两个站点并行运行,外网访问不同端口展示不同服务内容,完全互不干扰。

场景3:多IIS站点代理同一个本地端口

多个不同端口的IIS站点,均可转发至同一个localhost服务,所有站点展示内容完全一致,无冲突。

场景4:禁止部署场景

多个IIS站点绑定同IP同端口,无论代理哪个端口,都会触发端口冲突,仅一个站点可启动。

七、高频部署误区纠正

  1. 误区 :启动localhost服务后,IIS会自动识别访问
    纠正 :IIS无自动扫描功能,必须手动配置代理规则才会转发。
  1. 误区 :公网IP可以直接绑定在IIS中
    纠正 :公网IP属于网关地址,服务器无该网卡IP,只能端口转发映射。
  1. 误区 :端口相同就会冲突

    纠正 :仅IP+端口完全一致才冲突,localhost与内网IP同端口可共存。

  1. 误区 :外网可直接访问8008/8009端口

    纠正 :私有服务禁止外网直连,必须通过IIS反向代理中转,否则解析报错。

  1. 误区 :多站点可共用80端口

    纠正 :80端口唯一,多站点必须分配不同端口,与代理目标无关。

八、最终部署核心规则速记表

1. IP端口规则

内网IP可绑定IIS,公网IP仅转发、localhost仅本机访问;IP+端口一致才冲突,单端口不同IP无冲突。

2. 外网访问规则

外网访问三要素:端口转发+防火墙放行+服务运行;自定义端口必须手动配置放行。

3. 反向代理规则

转发端口由配置写死、可随时修改;仅流量中转,不融合两个服务,服务相互独立。

4. 多服务共存规则

多本地不同端口服务可并行;多IIS站点必须不同端口;各站点代理规则独立互不干扰。

九、本次实操报错最终总结

  1. 120.46.xxx.yy 正常访问:依托IIS 80端口+反向代理中转,成功读取localhost:8008诗词系统内容;

  2. 120.46.xxx.yy:8008 解析失败:外网直接访问私有本地端口,无代理中转,协议不匹配,属于正常现象,非故障

  3. 正确访问方式:统一通过公网80端口访问,依靠IIS反向代理转发私有服务内容,禁止外网直连8008/8009自定义端口。

相关推荐
您^_^2 小时前
ClaudeCode最近更新导致第三方模型Token消耗率暴涨,缓存命中也相当夸张!!
人工智能·windows·缓存·个人开发·claudecode·deepseek v4 pro
您^_^2 小时前
新手上路(四):Codex MCP 实战——让 Codex 连接外部世界
人工智能·windows·个人开发·codex·deepseek v4 pro
开开心心就好2 小时前
小白友好的程序联网封锁实用工具
windows·eureka·计算机外设·rabbitmq·word·excel·csdn开发云
MageGojo2 小时前
小程序每日一谜怎么做:riddle 接口接入示例
windows·小程序·apache·谜语
Dfreedom.10 小时前
Windows、虚拟机、开发板组网通信原理及调试通联步骤
人工智能·windows·部署·边缘计算·开发板·模型加速
三无推导16 小时前
ComfyUI 安装部署教程:Windows 下快速搭建可视化 AI 绘图工作流,零基础也能跑通
人工智能·pytorch·windows·stable diffusion·aigc·ai绘画·持续部署
nnsix18 小时前
PS【PhotoShop】实现拷贝到Windows粘贴板上
windows
сокол18 小时前
【网安-Web渗透测试-免杀系列】内存免杀(无文件落地)
windows·网络安全
玖釉-18 小时前
二叉树基础详解:TreeNode、buildTree、deleteTree 与 printTree 的实现原理(C++)
c++·windows·算法