IIS8反向代理,前后端分离部署解决方案

时间:2024-04-14 12:27:12

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

基础背景:

  • 前端部署域名:ui.st***s.com
  • 前端数据请求地址:形如:ui.st***s.com/api/****,重点是接口地址包含api这个关键字,接来下会使用
  • 服务端:service.st***s.com

IIS要求:版本必须是IIS7及其以上

1.安装ARR(Application Request Routing)

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

IIS8反向代理,前后端分离部署解决方案

2. 开启代理功能

  1. 打开第一步安装的ARR,如图                                                                                                                                                                                                                                                                                                                                                    IIS8反向代理,前后端分离部署解决方案
  2. 打开右侧的操作面板最下方的  Server Proxy Settings...  选项,开启代理服务,如图:                                                                                                                                                                IIS8反向代理,前后端分离部署解决方案

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

  1. 进入前端部署的站点,进入URL重写 功能                                                                                                                                                                                                                      IIS8反向代理,前后端分离部署解决方案
  2. 左侧操作菜单选择添加规则,新建一条入站规则,选择空白规则,如图(目的是匹配请求的URL,当符合我们添加的规则时,则进行反向代理的操作,文章的开头设定一种情形,假定所有的数据请求都是这种“ui.st***s.com/api/****”,都是以api这个关键词开头,接来要做的就是写一个正则表达式来匹配需要反向代理的url请求)                                                                                                                                                                                    IIS8反向代理,前后端分离部署解决方案
  3. 编辑入站规则,这是重点​​​​。                                                                                                                                                                                                                                                                                                                                                        1.填写匹配URL选项相关信息,如图:采用与模式匹配的正则表达式,表达式为:^api/(.*),匹配所有前端站点的包含api的url请求                                                                         IIS8反向代理,前后端分离部署解决方案                                                                                                                                                                                                                              2.填写条件,如图:条件是说匹配哪个域名,填写文章开头说的前端站点的域名 ui.st***s.com ,条件输入:{HTTP_HOST}(请求的主机名),模式:^ui.st***s.com$(如果有端口可以加上端口)                                                                                                                                                                       IIS8反向代理,前后端分离部署解决方案                                                                                                                                                                                                                              3.填写反向代理最终指向的地址,前面我们所做的匹配,就是为了这一步所做的准备,如图:操作类型是重写,URL填写:http://service.st***s.com/api/{R:1}注意前面匹配了URL中包含api关键词的URL,这里必须加上/api/{R:1}{R:1}是说api后面的参数都带者,例如:原始请求:http://ui.st***s.com/api/get,重定向为:http://service.st***s.com/api/get                                                                                                                                                           IIS8反向代理,前后端分离部署解决方案

4.完成

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