前后端分离项目,启用 IIS反向代理部署 解决方案

前言:该文章希望给IIS使用者分享前后端分离部署时,跨域请求的解决方案(反向代理),我们所说的反向代理,意在代理数据请求,静态资源还是原始站点,当然也可以使用CDN服务。一些较大的电商网站会采用这种形式,前端页面真正的节点部署可能都不到10台机器,静态资源走CDN服务,数据请求就通过反向代理的方式。

基础背景:

前端部署域名:kmxs.com.cn
前端数据请求地址:形如:kmxs.com.cn/api/****,重点是接口地址包含api这个关键字,接来下会使用
服务端:www.baidu.com
IIS要求:版本必须是IIS7及其以上

1.安装ARR(Application Request Routing)

下载地址:http://www.iis.net/downloads/microsoft/application-request-routing,安装成功如下图,如果已经安装进行第2步

2. 开启代理功能

打开第一步安装的ARR,如图


打开右侧的操作面板最下方的 Server Proxy Settings... 选项,开启代理服务,如图:

3.配置反向代理规则(重点)

进入前端部署的站点,进入URL重写 功能  


左侧操作菜单选择添加规则,新建一条入站规则,选择空白规则,如图(目的是匹配请求的URL,当符合我们添加的规则时,则进行反向代理的操作,文章的开头设定一种情形,假定所有的数据请求都是这种“kmxs.com.cn/api/****”,都是以api这个关键词开头,接来要做的就是写一个正则表达式来匹配需要反向代理的url请求)
     



编辑入站规则,这是重点​​​​。
       1.填写匹配URL选项相关信息,如图:采用与模式匹配的正则表达式,表达式为:^api/(.*),匹配所有前端站点的包含api的url请求



写文章开头说的前端站点的域名 kmxs.com.cn ,条件输入:{HTTP_HOST}(请求的主机名),模式:^www.baidu.com$(如果有端口可以加上端口)



3.填写反向代理最终指向的地址,前面我们所做的匹配,就是为了这一步所做的准备,如图:操作类型是重写,URL填写:http://www.baidu.com/api/{R:1},注意前面匹配了URL中包含api关键词的URL,这里必须加上/api/{R:1},{R:1}是说api后面的参数都带者,例如:原始请求:http://kmxs.com.cn/api/get,重定向为:http://www.baidu.com/api/get  


 

4.完成

保存规则,重启站点,再次访问前端的站点,数据请求便被代理到了后端的站点。



 

评论