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 ...
随机推荐
- ASP.NET中将数据作为XML数据发送 使用 Request.InputStream 接收
将数据作为XML数据发送,例如:public void PostXml(string url, string xml){byte[] bytes = Encoding.UTF8.GetBytes(xm ...
- 什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?
什么是JavaBean.bean? 什么是POJO.PO.DTO.VO.BO ? 什么是EJB.EntityBean? 前言: 在Java开发中经常遇到这些概念问题,有的可能理解混淆,有的 ...
- linux下syscall函数 间接系统调用
NAME syscall - 间接系统调用 SYNOPSIS #define _GNU_SOURCE #include ...
- Linux 后台进程管理
fg.bg.jobs.&.ctrl + z命令一. &加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &,二.ctrl + z可以将一个正在前台执行的命令放到后台 ...
- BASIC-26_蓝桥杯_报时助手
示例代码: #include <stdio.h> void print(int x) { switch(x) { : printf("zero ");break; : ...
- java学习——类之YuanZhu
package hello; import java.util.Scanner; public class YuanZhu { public static void main(String[] arg ...
- Find substring with K distinct characters
Given a string and number K, find the substrings of size K with K distinct characters. If no, output ...
- Linux系统运行级与启动机制剖析
原文作者:技术成就梦想 原文链接:http://ixdba.blog.51cto.com/2895551/533740 一 系统运行级windows系统有安全运行模式和正常运行模式,这是两个不同的运行 ...
- rman备份恢复命令之switch(转)
一 switch 命令1 switch命令用途更新数据文件名为rman下镜像拷贝时指定的数据文件名更新数据文件名为 set newname 命令指定的名字. 2 switch 命令使用前提条件rman ...
- PHP mysqli_autocommit() 函数
定义和用法 mysqli_autocommit() 函数开启或关闭自动提交数据库修改. 提示:请查看 mysqli_commit() 函数,用于提交指定数据库连接的当前事务.请查看 mysqli_ro ...