前言:该文章希望给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步
2. 开启代理功能
- 打开第一步安装的ARR,如图
- 打开右侧的操作面板最下方的 Server Proxy Settings... 选项,开启代理服务,如图:
3.配置反向代理规则(重点)
- 进入前端部署的站点,进入URL重写 功能
- 左侧操作菜单选择添加规则,新建一条入站规则,选择空白规则,如图(目的是匹配请求的URL,当符合我们添加的规则时,则进行反向代理的操作,文章的开头设定一种情形,假定所有的数据请求都是这种“ui.st***s.com/api/****”,都是以api这个关键词开头,接来要做的就是写一个正则表达式来匹配需要反向代理的url请求)
- 编辑入站规则,这是重点。 1.填写匹配URL选项相关信息,如图:采用与模式匹配的正则表达式,表达式为:^api/(.*),匹配所有前端站点的包含api的url请求 2.填写条件,如图:条件是说匹配哪个域名,填写文章开头说的前端站点的域名 ui.st***s.com ,条件输入:{HTTP_HOST}(请求的主机名),模式:^ui.st***s.com$(如果有端口可以加上端口) 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
4.完成
保存规则,重启站点,再次访问前端的站点,数据请求便被代理到了后端的站点。