Howto: 如何通过IIS7为ArcGIS Server配置反向代理系统架构

Howto: 如何通过IIS7为ArcGIS Server配置反向代理系统架构 

摘要: 

这篇文章提供了如何使用IIS7的两个扩展模块:Application Request Routing(ARR)和URL Rewrite为ArcGIS Server 配置反向代理的详细描述。仅有Windows Server 2008的IIS7上是支持ARR和URL Rewrite的。这两个扩展在早期版本的Windows IIS上的是不支持的。虽然外部的反向代理服务器必须Windows Server 2008, 但是内部服务器可以是ArcGIS Server 9.3支持的任何操作系统。
 
关于为何要使用反向代理架构的详细描述可以参阅:
How to: Configure a reverse proxy system architecture with ArcGIS Server

声明:
  • 虽然文档中内部的ArcGIS Server服务器是针对Windows 操作系统的,但是绝大多数的原则同样适用于UNIX/Linux系统。
  • 在配置ArcGIS Server .NET和Java版本的不同之处已经明确的标识出来。

试验

 本人的试验中使用window7做反向代理Web服务器机器名为“myExternalServer”(192.168.14.189-microso-lk029mm),使用Windows Server 2008做内部机器名为“myInternalServer”(10.0.0.28-win-fzr5tcqy0pf),

内容:

接下来的内容将详细描述ArcGIS Server和IIS7的配置过程,以使ArcGIS Server Web 服务和ADF应用基于反向代理工作。

为了方便讲解,在这里定义ArcGIS Web services和ADF应用所在的内部机器名为“myInternalServer”,反向代理Web服务器机器名为“myExternalServer”,ArcGIS Server的实例名为”ArcGIS”。这些名称可根据实际情况替换为实际的服务器名和实例名。对于外部服务器使用完全合格域名(FQDN),例如,myExternalServer.esri.com, 以便Internet用户能够访问服务器并且任何SSL证书都可以适当解析。

 

开始以前,确保:

A)     外部服务器可以连接到内部服务器。 步骤查看 >>  
外部服务器可以连接到内部服务器的步骤
myExternalServer和myInternalServer 之间的防火墙必须允许HTTP请求通过myInternalServer Web服务器的端口。默认,端口是80。

为了测试连接,在myExternalServer服务器上打开Web 浏览器,并且输入myInternalServer的URL。通常,myInternalServer 使用一个私有IP地址,例如:10.1.2.22。在myExternalServer 的浏览器中输入http://10.1.2.22:80,浏览器中应该渲染出myInternalServer 的缺省Web页面。

如果来自myInternalServer服务器的web页面在myExternalServer服务器的浏览器中不可用,那么让管理员在防火墙中打开通往myInternalServer的适当的HTTP端口。

可选,为了启用或提升外部和内部服务器的通信速度,在’myExternalServer’机器上的host’s文件可能需要更新IP地址和‘myInternalServer’机器名的映射。这将减少解析内部服务器机器名的时间。

a)     在反向代理服务器的机器上,用记事本打开host’s 文件。在Windows服务器,这个文件位于<Windows安装目录>\System32\drivers\etc\Hosts.
b)    在host’s文件的底部,添加下面的记录。这里假设内部服务器的IP地址为10.1.2.22。您需要用实际的IP地址和机器名替换。
10.1.2.22 myInernalServer
c)    保存host’s文件,无需重启机器改变即会生效。外部外部  外部服务器

就是在外部服务器可以看到内部服务器的iis界面。

http://10.0.0.28/

B)    ArcGIS Server for Microsoft .NET Framework或ArcGIS Server for Java产品已经安装到内部服务器(myInternalServer)。文档中假设ArcGIS ADF Web applications 和 Web services都位于myInternalServer服务器。内部的Web Server可以是ArcGIS Server支持的任何Web服务器。在外部服务器(myExternalServer)上不需要任何ESRI组件。

就是内部服务器有装Arcgis Server。

C)    Microsoft IIS7已经安装到外部服务器。如果有必要,参见  install IIS on Windows Server 2008 .

就是在外部服务器可以看到自己的iis7.0界面。
D)    IIS7的Application Request Routing(ARR)扩展已经安装,包含所需的必要扩展URL Rewrite 模块。在文章最后相关信息的下载链接中提供了ARR和URL Rewrite安装包的下载地址。根据你的操作系统选择x86(32位)x64(64位)的安装包。或者,也可以分别安装ARR和URL Rewrite扩展(查看安装连接中Using the Application Request Routing 页)。

就是在外部服务器装Application Request Routing(ARR),只要装Application Request Routing(ARR)即可,选择x86(32位)x64(64位)的安装包


E)    (可选)——H)    (可选),自己查看文章来源——如何通过IIS7为ArcGIS Server配置反向代理系统架构

 

以下的1到4步,对所有要使用反向代理Web系统架构的ArcGIS Server 系统都是必需的。这些步骤每个系统仅需要执行一次。步骤5可能用于配置反向代理Web 服务器跨内部防火墙通信。仅当ArcGIS Server使用非Apache 反向代理Web 服务器时,步骤6是必需的。步骤7显示了如何通过反向代理Web服务器访问ArcGIS 服务。步骤8必须为每一个要通过反向代理Web 服务器工作的ArcGIS Server ADF应用执行。步骤9显示了新创建的ArcGIS Server Web ADF应用可以通过反向代理Web 服务器访问的配置步骤。步骤10说明了如何转换已有的ArcGIS Server Web ADF 应用可以工作在新部署的反向代理Web服务器下。


1、在内部服务器(myInternalServer)上创建和Web共享三个新目录。应用使用Internet服务访问这些目录用于图片输出,图片缓存,和地理过程分析输出。这些目录可以使用任意名称,部署在任意位置,但是推荐创建在ArcGIS Server的缺省目录位置。例如,默认的ArcGIS Server 目录位于C:\arcgisserver,三个目录名是:

C:\arcgisserver\proxyoutput
C:\arcgisserver\proxycache
C:\arcgisserver\proxyjobs
试验: 

就是新建三个文件夹,路径如上面所示。
如果目录创建到server的非缺省目录位置(默认是C:\arcgisserver ),ArcGIS Server SOC账户必须对这些Server目录有读/写权限。 步骤参考 >>
就是确保SOC账户对这些文件夹有读写权限,我的试验中SOM与SOC都是Administrator,所以这部不在也能满足。
在创建并设置这三个目录的访问权限后,他们必须被共享到Web。
对于.NET 参考: 更多 >>
对于每一个创建的文件夹:
a)    从开始>控制面板>管理工具>Internet信息服务,打开IIS控制台;
b)    展开“myInternalServer(本地计算机)”节点。展开“网站”节点;
c)    右击“Default Web Site”节点,从上下文菜单中,选择‘新建>虚拟目录’,打开“添加虚拟目录”窗口;
d)    在别名文本框中输入要创建的目录名,例如“proxyoutput”,单击下一步;
e)    在目录文本框中,输入或导航到新创建的目录,单击确定
(可选)为每一个目录启用SSL安全:
a)    单击新创建的虚拟目录,在中间面板中双击“SSL设置”;
b)    选中“要求SSL”; 
c)    单击右侧的应用按钮,生效。
对应.NET参考

对于Java 参考:更多 >>,自己查看文章来源——如何通过IIS7为ArcGIS Server配置反向代理系统架构

 2、 使用ArcCatalog或ArcGIS Manager添加上一步骤创建的目录到ArcGIS Server配置。这些目录对于现有的Server目录来说是额外目录。

使用上面创建的物理目录创建一个output 目录,一个cache目录,和一个jobs 目录。

对于和步骤1中创建的物理目录相关的服务器虚拟目录的URL,参照下面格式设置:

http://myExternalServer/proxyoutput
http://myExternalServer/proxycache
http://myExternalServer/proxyjos

试验


说明:上面的URLs 必须引用外部服务器,而不是内部服务器。

参考下面链接中关于添加Server目录的说明:Creating a server directory


3、 重新配置现有服务或创建新服务,以被外部用户使用。服务要能被外部用户访问,必须使用前一步骤中创建的新的服务器目录。

关于创建新服务的说明,参见下面的Web页面:Adding a new service

创建新服务时,选择上面步骤中创建的output,cache,和/或jobs目录;

试验 本人的试验中使用


如果是修改现有服务,在服务属性的Parameters面板中,设置output,cache,和/或 jobs目录;

注意:一些组织不允许内部用户连接到组织的外部服务器。这种情况,可能必须要创建两个服务:一个用于内部,一个用于外部用户。


 4、 在内部服务器上配置REST服务。

说明:在做了上述改变后,当使用内部服务器的URL时,REST 服务的某些部分可能不会正确工作。

为ArcGIS Server .NET 版本配置REST 服务,步骤参考 >> 

a) 使用记事本或XML编辑器打开C:\Inetpub\wwwroot\ArcGIS est est.config (如果没有安装在默认位置,这个目录也可能不同)。
b) 改变文档中的下列元素,使用外部服务器的名称和端口。

<SoapUrl>http://myExternalServer/arcgis/services</SoapUrl>
<SoapSslUrl>https://myExternalServer/arcgis/services</SoapSslUrl>
ervicesDirectoryHelpUrl>http://myExternalServer/ arcgis/SDK/REST/servicesdirectory.html</ServicesDirectoryHelpUrl>
<ApiHelp baseUrl="http://myExternalServer/arcgis/SDK/REST/index.html?">
<Port>80</Port>
<SslPort>443</SslPort>
注意:不要改变<ServerName>的值。ServerName必须指定为内部服务器。
c) 为了增加安全性,改变<UseSslForLoginAndAdmin>的值为true,这样当用户登录到服务目录站点和管理工具时,就会要求通过HTTPS访问。
d) 保存并关闭rest.config 文件。
为Arcgis Server.NET版本配置REST服务,步骤参考

这里将myExternalServer改为192.168.14.189

为ArcGIS Server JAVA 版本配置REST服务,步骤参考 >>


5、 在外部服务器上配置反向代理服务器。作为参考,可以查看页面“定义和配置一个ARR服务器组”,位于Using the Application Request Routing Module。

(i) 从开始>所有程序>管理工具>Internet信息服务(IIS)管理器,登录IIS管理器。

(ii) 展开服务器的根节点(例如,myExternalServer)。根节点下将列出服务器场要素项。

说明:ARR也可以被用来创建Web场,以提供多服务器的请求负载均衡。这篇文章仅描述使用ARR将请求转向到一个单的、内部服务器。

(iii) 右键“服务器场”并且单击“创建服务器场…”

(iv) 在创建服务器场向导中,输入反向代理名称,例如,AGSReverseProxy。 这个名字被用来假冒URL定向到后面的站点上。单击下一步。

(v) 在添加服务器面板中,输入内部ArcGIS Server 机器的名称(或IP地址),例如,myInternalServer。单击结束。如果提示创建自动URL重写规则,单击否。

(vi) 在IIS管理器中,展开服务器节点,如果有必要也展开它的服务器场节点,单击刚创建的服务器场 (AGSReverseProxy)。有几个图标应该显示(运行状况测试,负载平衡,等等)。双击“路由规则”图标。

(vii) 在显示的路由规则面板中,选中“使用URL重写检查传入请求” 在IIS管理器右侧的活动面板中,单击应用。

试验 本人的试验中使用


6、 为外部服务器的反向代理添加规则。这些规则决定了什么样的URLs可以定向到内部服务器。

添加到URL 重写扩展中的规则,将配合 ARR扩展一起工作用于反向代理。通过下面的任意一种方法打开URL重写面板:(a)可以在上一步骤vii中直接查看路由规则面板,在右侧的活动面板中,单击“URL重写连接”;或者(b)在IIS管理器中,单击左侧的服务器名,然后双击中间面板中的“URL重写”图标。
对于将被反向代理转向的每一个目录,执行下面的(i)到(vi) 步。根据您安装的版本单击下面的适当链接显示列表。输入步骤(iv)中描述的目录。根据安装调整为适当的名字。首先是上面步骤2中创建的三个服务器目录。如果不需要支持KML和WMS服务类型,那么KML 和WMS的ArcGIS目录可以忽略不设置。对于token目录,仅当arcgis server 启用了基于token授权的安全机制时要设置。对于每一个要通过外部服务器访问的web application,添加一个URL重写规则,使用在内部服务器上的应用程序路径。后面的步骤9和10主要用于web 应用程序的配置。

对于.NET 版本的目录添加规则,参考 >>

/proxyoutput 
/proxycache 
/proxyjobs 
/arcgis/services 
/arcgis/rest 
/arcgis/kml 
/arcgis/wms 
/arcgis/SDK 
/arcgis/tokens 
/aspnet_client 
如果ASP.NET Web 应用运行在外部服务器,添加替换 / /aspnet_client/ESRI 
/MyWebAdfApplication (每个web 应用一个规则)
对于.NET版本的目录添加规则,参考

对于Java版本的目录添加规则,参考 >>自己查看文章来源——如何通过IIS7为ArcGIS Server配置反向代理系统架构

(i) 在活动面板的URL重写面板,单击“添加规则…”

(ii) 在添加规则对话框,选择“空白规则”,并单击确定。

(iii) 在显示的编辑规则面板中,输入规则的名称。这个名字并不公开使用,但是应该很容易识别,例如,ReverseProxyOutput。设置“请求的URL”为“与模式匹配”,并且使用通配符(正则表达式可被用于匹配目录,但是在这并没给出目录)。

(iv) 输入模式,它应该是通配符字符目录。例如,对于proxyoutput目录,输入proxyoutput*. 不要使用胡乱的字符开始路径。建议参考上面链接中的.NET或Java版目录列表。选中“忽略大小写”选项,除非请求应该是大小写敏感的。

(v) 设置操作为“路由到操作场”。确认,操作属性中显示的是已经创建的反向代理的服务器场名(例如,AGSReverseProxy)。在这里服务器场被用作假冒-URL,实际的位置是早前添加到服务器场的计算机。保留路径“/{R:0}”, 这意味着URL路径将被传递到反向代理。选中选项“停止处理后续规则”。

(vi) 为了保存规则,单击IIS 管理器右侧操作面板中的“应用”。
为应该代理的每一个目录执行步骤(i)到(vi)。
在离开URL重写规则列表前,检查是否有一个以_loadbalace 结尾的规则已经被添加(当使用URL重写被激活时,ARR扩展可能会添加它)。如果是这样,单击选择,然后在操作面板中“禁用”这个规则。这个规则如果有效,将会传递所有的通信到后端服务器,而不仅仅是上面定义规则的请求。

 试验 本人的试验中使用

 


8、 ArcGIS Server web 服务(SOAP和REST)现在可以通过下面的URLs访问:

SOAP: http://myExternalServer/arcgis/services
REST: http://myExternalServer/arcgis/rest/services

 

参考文章:

如何通过IIS7为ArcGIS Server配置反向代理系统架构:http://support.esrichina-bj.cn/2008/1203/983.html

用IIS配置反向代理:http://my.oschina.net/tanyixiu/blog/123832

转载于:https://www.cnblogs.com/aiyouku/p/IIS7_ArcGIS_Server.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值