IIS7的 ARR ( Application Request Routing )模块是个「非常强悍」的网站工具,今天抽空研究了一下,并成功设定 Reverse Proxy 机制,由于初学者要上手 ARR 真的有点困难,即便是对 Regular Expression 有经验的 IT 人要成功设定都可能会遇到许多障碍,如果没使用过 URL Rewrite 或不了解 Reverse Proxy 的人要上手那可是难上加难,所以今天我就分享一篇完整的安装、设定过程。
安装 APPLICATION REQUEST ROUTING 1.0模块
1.使用 Microsoft Web Platform Installer 安装 Application Request Routing 1.0 模块
2.预设会连带 URL Rewrite 一并安装,以及其他必要的相关组件也会自动安装
接着按下 I Accept 就会进行自动安装了。
3.若顺利安装,会得到以下画面
开启 IIS 管理员进行设定
1.先检视模块是否安装正确,你先点选「服务器节点」,再看看 IIS 区段中有没有 Application Request Routing 与 URL Rewrite 模块。
2.先对 Application Request Routing 进行设定,启用 Proxy 功能,以及取消勾选 "Reverse rewrite host in response headers" 选项,然后再点选右边的「套用」按钮,其他默认值都可以不用修改。此步骤修正完成后必须重新启动 IIS 才会生效。
3.接着设定 URL Rewrite 模块,也是进入门坎最高的地方。首先我们先新增一组规则 (Add Rules )
4.在 Add rule with rewrite map 窗口设定一组 rewritemap 的名称,你可以自己手动输入,但名称请不要使用空白或特殊符号!在这里我们手动设定名称为ReverseProxyMap
5.我们先新增几笔我们要设定的 Reverse Proxy 对应表,这里的 Rewrite Map 是一组很简单的 Key/Value 值而已,我的目的是要用来对应 HTTP Request 的 HTTP_HOST 标头值,并转译成另一个网址,以达到 Reverse Proxy 的目的。
6.然后我们点选 Back To Rules 准备进行修改 URL Rewrite 的主要设定。
7.接着在预设帮你建立的 Rewrite rule1 for ReverseProxyMap 这个 Rule 上按鼠标右键进行编辑(Edit)
8.这里的预设设定大多不是我们要的,为了达到 Reverse Proxy 的功能,我们必须修改 Conditions 与 Action 的参数。
9.修改 Conditions 参数,将预设的参数改掉,你只要将 Condition input修改成 {ReverseProxyMap:{HTTP_HOST}} 即可。
10.最后我们将 Action 区段的 Rewrite URL 修改成 http://{C:0}/{R:0},将 Append query string 勾选,以及将 Stop processing ofsubsequent rules 勾选,在点选「套用」就大功告成了!
---
最后,进行测试 http://192.168.2.253/ 所得到的网页就是 http://www.miniasp.com/ 的网页内容,也明确的符合 Reverse Proxy 的需求。
接着我自己新增一笔 Rewrite Map Entry,在 Original Value 的地方我设定成 testarr ( 这是一个不存在的网域,所以我有在我本机的 hosts 档案设定这笔纪录 ),在 New Value 的地方设定成另一个网站网址。
测试成功!以上图为例,我连结到 http://testarr/ 所得到的网页就是 http://www.yam.com/ 网页的内容!
---
Reverse Proxy 只是 ARR ( Application Request Routing )模块的一个应用而已,实际上 ARR 能做的事情可多着呢,例如说组织 Server Farms、实做 HTTP Load Balance (Layer 7 )、实做 External Cache,甚至于搭配 NLB 还可提供 High Availability (高可用性) 与 Scalability (高延展性) 的网站环境。
在以往要实做这些机制都要花许多钱购买硬件或高价产品,免费的产品也很多,不过就是要与非常极度复杂的配置文件对抗!现在我们有 ARR 这套免费的佛心级模块,再也不怕大流量的网站需求了。
有了 ARR 虽然一开始也没有很好设定,但是当了解 ARR 的架构、观念、设定之后,你将会发现拥有 GUI 是多么美好的事情。
相关连结
- Using the Application Request Routing Module
- IIS 7.0 - Application Request Routing (ARR) 在线讨论区
- Using URL Rewrite Module
- URL Rewrite Module Configuration Reference
- Reverse Proxy
- Application Request Routing Version 2
- Modifying HTTP Response Headers
- Reverse Proxy with URL Rewrite v2 and Application Request Routing