news 2025/12/26 22:58:01

IIS 反向代理详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IIS 反向代理详解

介绍:

🌐1. 反向代理访问流程是怎样的?

反向代理的核心在于“前端接收,后端转发”。

  • 用户的视角(浏览器):
    • 访问旧网站:http://旧域名.com-> 浏览器自动走80端口-> IIS 直接返回内容。
    • 访问新网站:http://新域名.com-> 浏览器自动走80端口-> IIS 接收到请求。
  • 服务器的视角(IIS/ARR):
    • IIS 听到 80 端口有请求,看了一眼信封上的“收件人”(即 HTTP Header 中的Host)。
    • 如果是“旧域名”,IIS 就让旧网站处理。
    • 如果是“新域名”,IIS 就把这封信悄悄塞给 ARR 模块。
    • ARR 模块:拿着这封信,跑到服务器内部的8080端口去找那个新网站:“有人找你,把回复给我。”
    • 新网站(8080端口)处理完后,把网页交给 ARR。
    • ARR 再把网页递给 IIS,IIS 最后把网页发回给用户。

结论:用户始终只和 80 端口打交道,完全不知道 8080 端口的存在。

⚖️ 2. 为什么不会冲突?

这就好比一个公司的前台(IIS)和快递柜(8080端口):

  • **前台(IIS)**站在门口(80端口),负责接待所有访客。
  • **快递柜(8080端口)**放在公司内部走廊里,访客看不到它。
  • 当访客(用户)来找“快递”(访问新网站)时,他只需要告诉前台。前台去快递柜取出来给他,访客不需要亲自去走廊找柜子。

所以,旧网站直接由前台服务,新网站由前台代理服务,两者互不干扰,都能通过“只输入域名”来访问。

🔐 3. 关于 HTTPS (443端口) 的补充

如果你的新网站也需要 HTTPS(即用户访问https://新域名.com),配置逻辑是一样的:

  1. 在 IIS 的代理站点中,绑定https协议和新域名,并安装 SSL 证书。
  2. ARR 规则保持不变(依然转发给http://127.0.0.1:8080)。
  3. 流程:用户 -> 443端口 (IIS解密SSL) -> ARR转发给 8080端口 (HTTP内网通信) -> 返回。

这样,用户看到的是安全的 HTTPS,而服务器内部为了节省资源,使用 HTTP 通信。

⚠️ 4. 需要注意的一个细节

虽然用户不需要加端口号,但在 IIS 的**新网站(运行在 8080 端口的那个)**绑定设置中,建议做如下调整以避免直接暴露:

  • IP地址:设置为127.0.0.1::1(仅本地访问)。
  • 端口:保持8080

为什么要这样?这样设置后,外部用户即使猜到了http://你的服务器IP:8080,也无法直接访问到你的网站内容(会提示拒绝连接或 404),他们必须通过域名走 80 端口(反向代理)才能访问。这增加了安全性,也强制了“无端口访问”的规范。

具体步骤:

🔧 前提条件确认

请先确保以下两项已在你的 Windows 服务器上完成安装:

  1. URL Rewrite 模块(用于重写规则)
  2. Application Request Routing (ARR)(用于反向代理)

🚀 第一步:启用 ARR 全局代理功能

⚠️ 这一步非常关键!很多配置失败就是因为漏了这步。

  1. 打开IIS 管理器
  2. 在左侧连接树中,点击最顶层的服务器名称(不是某个网站)
  3. 在中间功能视图中,双击打开Application Request Routing Cache
  4. 在右侧“操作”面板中,点击Server Proxy Settings
  5. ✅ 勾选Enable proxy
  6. (可选)建议将Timeout (seconds)改为60或更高(避免大文件超时)
  7. 点击Apply(应用)

✅ 此时 ARR 代理功能已全局启用。

🎯 第二步:确定“接收请求”的站点(即监听 80 端口的站点)

  • Default Web Site绑定了:80(即所有 HTTP 请求默认进入此站)
  • 当访问http://你的域名就会显示 Default Web Site

因此,我们需要在Default Web Site上添加反向代理规则,而不是新建站点。

第三步:为 Default Web Site 添加反向代理规则

方法:直接编辑Web.config(最可靠)

  1. 打开Default Web Site的物理路径(通常是C:\inetpub\wwwroot
  2. 在该目录下找到或创建文件:web.config
  3. 用记事本或 VS Code 打开它
  4. 将以下完整配置粘贴进去(如果已有<system.webServer>,只复制<rewrite>...</rewrite>部分到其中):
<configuration> <system.webServer> <rewrite> <rules> <!-- 修正:添加 ignoreCase="true" 并确保域名完全一致 --> <rule name="Proxy_mc-admin" stopProcessing="true"> <match url="(.*)" /> <conditions> <!-- 重点:添加 ignoreCase="true" 并确保域名无额外字符 举例^shxnju\.skdji\.com$--> <add input="{HTTP_HOST}" pattern="^shxnju\.skdji\.com$" ignoreCase="true" /> </conditions> <action type="Rewrite" url="http://127.0.0.1:8001/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>

关键说明:

  • {HTTP_HOST}会获取用户浏览器地址栏输入的域名(不含端口)
  • pattern="^shxnju\.skdji\.com$"中的\.是正则转义,确保匹配字面意义的点号
  • url="http://127.0.0.1:8001/{R:1}"表示将请求转发给本机 8001 端口,并保留原始路径(如/a/b→ 转发到:8001/a/b
  • stopProcessing="true"表示匹配成功后不再执行后续规则(安全)

🔒 第四步(可选但推荐):限制 mc-admin 站点仅本地访问

为了安全,防止有人直接通过http://shxnju.skdji.com:8001访问后台,建议限制其绑定:

  1. 在 IIS 中找到绑定8001的 站点
  2. 右键 →编辑绑定(Edit Bindings)
  3. 选中http绑定(端口 8001),点击编辑
  4. IP 地址从 “全部未分配” 改为127.0.0.1
  5. 点击确定

❗ 常见问题排查

问题可能原因解决方案
访问xjkj.meukeji.cn仍是 Default Web SiteWeb.config 未生效 / 规则写错检查 Web.config 是否在wwwroot,检查域名拼写,重启 Default Web Site
返回 502.3 Bad GatewayARR 未启用 / 目标端口不通确认第三步已启用 proxy;在服务器本机访问http://127.0.0.1:8001看是否通
页面样式错乱 / JS 加载失败后端返回的链接含:8001需要配置出站规则(Outbound Rules)替换 HTML 中的 URL,或让前端使用相对路径
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/25 21:49:11

Git内外网协作完全指南:从冲突到和谐的团队开发

Git内外网协作完全指南&#xff1a;从冲突到和谐的团队开发 &#x1f30d; 开篇故事&#xff1a;隔空协作的烦恼 想象一下&#xff0c;你和你的团队正在一起建造一座乐高城堡&#xff1a; 外网团队&#xff08;只能看图纸&#xff0c;不能修改城堡&#xff09;&#xff1a;负…

作者头像 李华
网站建设 2025/12/19 5:29:01

C++学习记录-旧题新做-字符串压缩

旧题记录帖&#xff1a;https://blog.csdn.net/chamao_/article/details/143305269?fromshareblogdetail&sharetypeblogdetail&sharerId143305269&sharereferPC&sharesourcechamao_&sharefromfrom_link c解法&#xff1a; class Solution { public:stri…

作者头像 李华
网站建设 2025/12/12 19:09:26

外卖霸王餐api接口如何对接?

外卖霸王餐API接口对接是指将外卖平台的霸王餐活动集成到自己的应用程序或网站中&#xff0c;允许用户参与霸王餐活动。这种集成通常通过API&#xff08;应用程序编程接口&#xff09;实现。以下是外卖霸王餐API接口对接的一般步骤和注意事项&#xff1a;1. 对接前的准备工作1.…

作者头像 李华
网站建设 2025/12/12 19:09:07

VFXToolbox终极指南:5大功能亮点彻底改变特效制作流程

VFXToolbox终极指南&#xff1a;5大功能亮点彻底改变特效制作流程 【免费下载链接】VFXToolbox Additional tools for Visual Effect Artists 项目地址: https://gitcode.com/gh_mirrors/vf/VFXToolbox 还在为复杂的视觉特效制作流程而烦恼吗&#xff1f;VFXToolbox这款…

作者头像 李华
网站建设 2025/12/12 19:08:53

61、NFS文件服务器的配置与使用指南

NFS文件服务器的配置与使用指南 1. 为NFS开放防火墙 NFS服务的正常运行依赖多个不同的服务守护进程,且大多数守护进程会监听不同的端口。对于Fedora中默认使用的NFSv4,NFS服务器要正常运行,必须开放TCP和UDP的2049(nfs)和111(rpcbind)端口。同时,为了使showmount命令…

作者头像 李华
网站建设 2025/12/18 1:17:04

Fluent Terminal:重新定义Windows命令行体验的现代化工具

Fluent Terminal&#xff1a;重新定义Windows命令行体验的现代化工具 【免费下载链接】FluentTerminal A Terminal Emulator based on UWP and web technologies. 项目地址: https://gitcode.com/gh_mirrors/fl/FluentTerminal 还在为Windows自带的命令行工具界面陈旧、…

作者头像 李华