Windows IIS上为Vue 3 + Vite项目配置后端API代理的完整流程
我梳理了在Windows IIS上为Vue 3 + Vite项目配置后端API代理的完整流程。核心思路就是利用IIS的URL重写(URL Rewrite)和应用程序请求路由(ARR)模块,将前端发起的API请求转发到后端服务。
下面是为Vue 3项目在IIS上配置API代理的标准步骤:
⚙️ 第一步:准备必要组件
在IIS中实现代理功能,需要两个关键的扩展模块,缺一不可:
URL Rewrite(URL重写)
Application Request Routing (ARR):这个模块让IIS具备了反向代理的能力。
安装与启用说明:
下载与安装:可以从微软官方或相关技术社区下载这两个模块的安装包。需要特别注意的是,最好先安装URL Rewrite,再安装ARR,因为ARR的安装和运行依赖于它。
启用代理功能:安装完成后,在IIS管理器中,点击服务器级别的 Application Request Routing Cache,然后在右侧操作面板点击 Server Proxy Settings,勾选 Enable proxy 并点击“应用
第二步:核心配置——编写web.config规则
最推荐、也最便于管理的方式是在你的Vue项目打包后的dist文件夹根目录下,手动创建一个名为web.config的文件,将所有重写规则写入其中,比如
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<!-- 【规则1:代理API请求】-->
<!-- 假设你的后端API地址是 http://localhost:5000,且前端请求路径以 /api/ 开头 -->
<rule name="ProxyToBackendAPI" stopProcessing="true">
<match url="^api/(.*)" />
<action type="Rewrite" url="http://localhost:5000/api/{R:1}" />
</rule>
<!-- 【规则2:支持Vue Router的History模式】-->
<!-- 将所有对不存在的文件或目录的请求,都重写到 /index.html,由前端路由接管 -->
<rule name="HandleSPARouting" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
下面是为Vue 3项目在IIS上配置API代理的标准步骤:
⚙️ 第一步:准备必要组件
在IIS中实现代理功能,需要两个关键的扩展模块,缺一不可:
URL Rewrite(URL重写)
Application Request Routing (ARR):这个模块让IIS具备了反向代理的能力。
安装与启用说明:
下载与安装:可以从微软官方或相关技术社区下载这两个模块的安装包。需要特别注意的是,最好先安装URL Rewrite,再安装ARR,因为ARR的安装和运行依赖于它。
启用代理功能:安装完成后,在IIS管理器中,点击服务器级别的 Application Request Routing Cache,然后在右侧操作面板点击 Server Proxy Settings,勾选 Enable proxy 并点击“应用
第二步:核心配置——编写web.config规则
最推荐、也最便于管理的方式是在你的Vue项目打包后的dist文件夹根目录下,手动创建一个名为web.config的文件,将所有重写规则写入其中,比如
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<!-- 【规则1:代理API请求】-->
<!-- 假设你的后端API地址是 http://localhost:5000,且前端请求路径以 /api/ 开头 -->
<rule name="ProxyToBackendAPI" stopProcessing="true">
<match url="^api/(.*)" />
<action type="Rewrite" url="http://localhost:5000/api/{R:1}" />
</rule>
<!-- 【规则2:支持Vue Router的History模式】-->
<!-- 将所有对不存在的文件或目录的请求,都重写到 /index.html,由前端路由接管 -->
<rule name="HandleSPARouting" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

浙公网安备 33010602011771号