IIS中利用ARR实现反向代理
反向代理是什么,不了解的,请自行百度。本人也是最近才研究这个主题,简单的来说,利用这项技术可以实现负载均衡,安全控制等web应用中重要的功能,对于web应用来说这是个很基础,也很重要的技术,值得开发者花点时间研究研究。
一直以为windows平台中的技术都比较简单,当想在windows平台实现反向代理的时候才发现,可没那么容易。随便在百度里一搜,关于反 向代理的网页链接还不少,其中分为两大波,windows平台下和非windows平台下。非win平台下,本人没有重点关注,那些文章的大意都是讲很方 便,只要几行配置的代码。关于windows平台下的,本人细看了下,中文的文章基本没多大参考价值,就那么几篇,还都是抄来抄去,如果非要看中文,推荐 大家这篇文章:http://blog.csdn.net/yuanguozhengjust/article/details/23576033。这篇 也只能作为入门的入门。而且,如果简单的按照作者说的那样做,可能会出现问题,特别是匹配URL那一块,很多文章都使用正则表达式,建议对正则表达式不是 很熟悉的朋友慎用,推荐使用通配符,简单靠谱。注意一点,本人说的win平台下的反向代理是利用IIS+ARR组件实现的,ARR组件需要另外下载安装, 至于在哪里下载,怎么安装,相信读者自己可以解决,另外推荐使用IIS7.0以上版本,arr组件也尽量使用最新版的。
确保IIS和ARR组件正确安装后,要实现反向代理,说白了就是一系列的配置,可以选择使用可视化界面配置或者手动修改配置文件。关于ARR的 配置推荐这篇文章:http://www.iis.net/learn/extensions/url-rewrite-module/url- rewrite-module-configuration-reference#Rewrite_action,虽然全是英文,但挺容易看懂的,而且很 通俗易懂,不愧是出自一个微软项目经理之手。此外关于ARR的其它很多问题都可以在这个站点下找到相关资料。
下面我给出一个简单的步骤(亲测有效):
目标:把图中上方的地址用下方的地址代理出去,下方的为本机地址,上方为本机可访问的局域网地址或公网地址,注意端口要一致。一般情况下,两台 服务器位于同一局域网中,其中的代理服务器被映射到一个外网的ip,即外网只能通过代理服务器访问局域网。另外要求,外网只能访问该url及其子代虚拟目 录,即使该页面上有对虚拟目录上级的链接,点击也将失效。本次演示,本地机器作为代理服务器,以在站点中配置为例(在server farms中配置类似)。
1,安装好ARR组件后的IIS目录:
2,创建一个站点(ProxyServer),物理路径随便映射一个:
目录:
站点对应的功能视图(安装完ARR,站点功能视图会多出一些选项,常用的就是”URL重写“):
3,配置host文件(host文件为何物,相信不用我多说):
4,双击URL重写,添加一个入站规则:
匹配URL:
操作:
入站规则先配这么多,点击右侧的“应用”按钮,用代理服务器的地址(http://proxyserver:6080/arcgis/rest/services/TOCC/subway/MapServer)访问一下:
5,样式链接代理问题:
页面能出现,点击链接,可以进入子级,不能访问父级,对于访问的控制是ok的,但是细看,页面的样式很单调,用真实地址 (http://content.china-ccw.com:6080/arcgis/rest/services/TOCC/subway /MapServer)访问不是这样。在google浏览器中检查页面发现:
原来是样式的链接没有代理出来。那么再定义一个入站规则试试看能不能把样式给代理出去:
匹配url:
操作:
应用这个规则,重启一下站点,刷新代理地址(http://proxyserver:6080/arcgis/rest/services/TOCC/subway/MapServer):
ok,样式出来了!
至于在server farms中配置反向代理,用入站规则基本能搞定,感兴趣的童鞋可以继续研究,推荐多关注IIS的官方站点,至此,本次试验顺利完成,希望对初识ARR的同学有点帮助。
IIS中利用ARR实现反向代理的更多相关文章
- 利用nginx做反向代理解决前端跨域问题
最近朋友再群里提了一个问题,他们公司给他提供了一个获取数据的接口,在浏览器访问这个接口能获取到json数据,但是放在项目里使用ajax就产生了跨域问题,一般这个需要提供接口的后台方面需要做跨域处理,但 ...
- 利用Nginx+Mono+Fastcgi代替IIS对Asp.Net进行反向代理
Nginx的好处相信我不必多说了,它作为一个相当轻量级的开源Web 服务器以及反向代理服务器而深受欢迎.越来越多的公司已经对它产生兴趣,包括我们公司的许多部门,利用它进行负载均衡和资源管理,之前写过一 ...
- IIS 下 部署nodejs 使用反向代理
目标服务器:targetServer 配置反向代理的服务器:reveseProxServer iis应该是iis7及以上版本,才可以. 1.确定最终访问的网址:比如www.baidu.com .ww ...
- Linux系统中使用Nignx配置反向代理负载均衡
目录 使用nginx实现动静分离的负载均衡集群 使用nginx实现负载均衡和动静分离 使用nginx实现动静分离的负载均衡集群 Nginx官网源码包下载链接:http://nginx.org/en/d ...
- Tomcat:利用Apache配置反向代理、负载均衡
本篇主要介绍apache配置反向代理,介绍了两种情况:第一种是,只使用apache配置反向代理:第二种是,apache与应用服务器(tomcat)结合,配置反向代理,同时了配置了负载均衡. 准备工作 ...
- Net Core中 使用Middleware 实现反向代理
有这样的一个需求,我们要拦截某些特定的请求,并将它们重新定向到另一台服务器中,然而客户端并不知情. 在NetCore中我们可以用中间件来实现, 首先创建项目: 我这里只有2.1 Version 的 添 ...
- 利用Nginx实现反向代理web服务器
一.Nginx简介 Nginx是一个很强大的高性能Web服务器和反向代理服务器,它具有很多非常优越的特性: 可以高并发连接 内存消耗少 成本低廉 配置文件非常简单 支持Rewrite重写 内置的健康检 ...
- Linux中配置端口转发(反向代理)
在conf.d目录下建一个文件, 以conf为结尾(如果没有conf.d目录,就自己新建一个) server { listen 80; server_name 127.0.0.1; #这个IP是你服务 ...
- 利用vue-cli设置反向代理解决跨域问题
在config文件夹下面的index.js里,添加如下代码即可 proxyTable: { '/apis': { //将接口域名印射为/apis target: 'http://192.168.3.1 ...
随机推荐
- [转载]Linux下关于system调用
曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入.只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值.它所执行命令的返回值以及命令执行失败原 ...
- [UE4]让AI跑起来
让AI由静止状态变成跑步状态,做法跟玩家角色走路一样. 一.创建1D混合动画 二.在AI角色关联的动画蓝图中使用第一步创建的混合动画
- [UE4]事件处理(Handling Events)和委托(Delegate)代码示例(二)【C++】
3. 创建带参数的委托 我们可以通过修改委托的签名来使其接受参数 比如我们需要接受一个参数的话,可以在 GameMode 中这样声明: DECLARE_DELEGATE_OneParam(FParam ...
- [UE4]引擎自身提供的无锁队列等无锁容器(TLockFreePointerList)
常用的接口: TLockFreePointerListFIFO<T>:先进先出: TLockFreePointerListLIFO<T>:后进先出: TLockFreePoin ...
- Ubuntu下mysql的卸载重装
注:该方法是彻底删除ubuntu下面的文件,然后重新安装,更新root密码,所以mysql原数据会被删掉,所以一定一定要记得备份!!!!!!!! 转自:http://blog.csdn.net/chu ...
- UVA-10115
字符查找替换,WA了N次,一次只能替换一个,下一次find必须从第0个位置开始 import java.io.File; import java.io.FileNotFoundException; i ...
- distinct group by
select num from test_test group by num; 比 select distinct(num) from test_test; 效率高 select count(dis ...
- MVC 4 Razor Design Sample Demo Project
This is a demo project in MCV 4 razor design which encompases the general design of MVC pattern. The ...
- robot framework取出列表子元素
取出嵌套列表变量的子元素 ${list}型列表: ${list} = [["A1", "first"], ["A2", "seco ...
- leetcode973
public class POINT { public int X; public int Y; public int Z; } public class Solution { public int[ ...