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

文章编号 : 35894
软件: ArcGIS Server 9.3, 9.3.1
操作系统: Windows Vista, 2008Server
已邀请:

EsriSupport

赞同来自:

摘要: 这篇文章提供了如何使用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

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



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

开始以前,确保:


A) 外部服务器可以连接到内部服务器。
<a>步骤查看 >></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文件,无需重启机器改变即会生效。

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组件。
C) Microsoft IIS7已经安装到外部服务器。如果有必要,参见 install IIS on Windows Server 2008 .
D) IIS7的Application Request Routing(ARR)扩展已经安装,包含所需的必要扩展URL Rewrite 模块。在文章最后相关信息的下载链接中提供了ARR和URL Rewrite安装包的下载地址。根据你的操作系统选择x86(32位)或x64(64位)的安装包。或者,也可以分别安装ARR和URL Rewrite扩展(查看安装连接中Using the Application Request Routing 页)。
E) (可选)在内部服务器上,使用非缺省实例名安装ArcGIS Web 实例(例如,使用GISServices替代ArcGIS)。 说明:在内部和外部Web Server上使用的ArcGIS目录必须同名。
F) (可选)为了增加内部服务器的安全性,可以将ArcGIS实例安装到非default Web site并且/或者非缺省端口。 说明:HTTP或HTTPS的非缺省端口需要针对ARR进行额外配置。在下面的步骤5中包含说明。 注意:如果配置是基于IIS上的.NET,在安装ArcGIS 实例前,确保非缺省Web站点已经注册了ASP.NET支持(使用aspnet_regiis 工具)。
G) (可选)在内部GIS Server服务器上为服务和应用配置安全。限制服务或应用暴露给Internet访问。查看ArcGIS Server for .NET 或Java帮助中关于配置用户,角色和权限的文章。
H) (可选)配置支持SSL(HTTPS): (i) 在外部IIS 7 Web server上从公认的证书颁发机构获得并安装SSL证书。查看ArcGIS Server帮助文档,Setting up SSL,了解更多在IIS上设置SSL 的细节。
(ii) 在内部 Web Server 服务器上从CA获得并安装SSL证书,更多细节查看Web server帮助文档。
注意:很可能仅针对客户端对外部服务器的请求使用HTTPS, 在外部和内部服务器之间的请求使用普通的HTTP。然而,这会导致两台服务器间的所有通信(例如,用户名和密码)很容易被能够访问DMZ或内部网络的用户截获。
(iii) 为某些或全部的ArcGIS Server 服务和Web 应用启用SSL(HTTPS)。对于服务,在ArcCatalog或Manager中使用文件夹属性(检查“Require Encrypted Web Access”选项)。对于Web 应用,在 manager中使用application 标签编辑应用程序属性。在应用标签中,使用高级选项设置URL 使用HTTPS。假如应用没有列在Manager中,IIS管理控制台可以用来为应用设置启用SSL。为了做到这些,启动IIS管理器,导航并单击应用以选择它,右击SSL设置图标,选中Require SSL复选框,然后单击应用按钮。

以下的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目录有读/写权限。
<a>步骤参考 >></a>

a) 确定用来运行ArcGIS Server Object Container(SOC)进程的账户名称。这个账户在安装过程指定。通常,这个账户被命名为ArcGISSOC。识别SOC 账户,可以打开任务管理器,找到ArcSOC进程,查看运行身份标识。如果需要,可以通过查看->选择列…,打开用户名列;
b) 打开Windows Explorer ,并导航到创建的文件夹;
c) 右击服务目录文件夹,选择属性。打开属性对话框;
d) 单击对话框上的“安全”选项卡;
e) 单击“添加…”按钮,打开选择用户对话框;
f) 在选择用户对话框中,确保“查找位置”:窗口中显示的是 SOC用户所在的位置。通常这个值是本地计算机名,但是如果在安装过程中使用了域账户,那么这个位置应该是域名。如果这个位置不正确,单击“位置…”,然后选择本地计算机名或域名。单击“确定”返回选择用户对话框。
g) 在选择用户对话框中键入SOC用户账户。或者,也可以单击“高级”,搜索用户。单击“立即查找”高亮SOC账户,并单击确定。在选择用户对话框中,单击“检查名称”,以确保用户有效。单击确定,返回文件夹属性对话框,新添加的账户应该已经在用户列表中了。
h) 点击SOC用户,高亮显示,单击下面的复选框,为用户授予修改权限。
i) 单击确定,应用授权,并关闭属性对话框。
在创建并设置这三个目录的访问权限后,他们必须被共享到Web。

对于.NET 参考:
<a>更多 >></a>

对于每一个创建的文件夹:
a) 从开始>控制面板>管理工具>Internet信息服务,打开IIS控制台;
b) 展开“myInternalServer(本地计算机)”节点。展开“网站”节点;
c) 右击“Default Web Site”节点,从上下文菜单中,选择‘新建>虚拟目录’,打开“添加虚拟目录”窗口;
d) 在别名文本框中输入要创建的目录名,例如“proxyoutput”,单击下一步;
e) 在目录文本框中,输入或导航到新创建的目录,单击确定
(可选)为每一个目录启用SSL安全:
a) 单击新创建的虚拟目录,在中间面板中双击“SSL设置”;
b) 选中“要求SSL”;
c) 单击右侧的应用按钮,生效。 对于Java 参考:
<a>更多 >></a>

如果目录被添加到缺省的服务器目录位置,那么不需要做任何设置。
如果目录被添加到非缺省服务器目录位置,确保它们已经被添加为Web Server使用的上下文路径。对于随同ArcGIS Server安装的缺省Tomcat实例,定位到server.xml文件(默认位于C:\Program Files\ArcGIS\java\manager\service\tomcat\managerappserver\conf 目录下),在配置文件中添加新的服务器目录。例如,添加上面创建的三个目录,
C:\MyServerDirectories\proxyoutput
C:\MyServerDirectories\proxyjobs
C:\MyServerDirectories\proxycache
在server.xml文件中插入一行,将“MyServerDirectories”插入到文件中其它的<Context path>元素后面。

<Context path="/server2" docBase="C:/MyServerDirectories”/> 额外说明:在URLs中显示/server的位置使用/server2。

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

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

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

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

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

(可选)如果虚拟目录启用了SSL,那么将上面例子中的HTTP替换为HTTPS。

(可选)对于带有缓存切片的安全服务,缓存目录也应该启用安全,以阻止未授权用户对切片的访问。不带虚拟目录的缓存目录可以用于控制访问。更多细节参考ArcGIS Server 帮助专题:
Securing the cache directory.

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


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

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

创建新服务时,选择上面步骤中创建的output,cache,和/或jobs目录;
如果是修改现有服务,在服务属性的Parameters面板中,设置output,cache,和/或 jobs目录;

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

(可选)为服务启用HTTPS通信。可以参考下面链接中的说明文档:

.NET:Securing Internet Connections or
Java: Organizing services in folders


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

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

a) 使用记事本或XML编辑器打开C:\Inetpub\wwwroot\ArcGIS est est.config (如果没有安装在默认位置,这个目录也可能不同)。
b) 改变文档中的下列元素,使用外部服务器的名称和端口。
<SoapUrl>http://myExternalServer/arcgis ... gt%3B
<SoapSslUrl>https://myExternalServer/arcgi ... gt%3B
ervicesDirectoryHelpUrl>http://myExternalServer/ arcgis/SDK/REST/servicesdirectory.html</ServicesDirectoryHelpUrl>
<ApiHelp baseUrl="http://myExternalServer/arcgis ... gt%3B
<Port>80</Port>
<SslPort>443</SslPort> 注意:不要改变<ServerName>的值。ServerName必须指定为内部服务器。
c) 为了增加安全性,改变<UseSslForLoginAndAdmin>的值为true,这样当用户登录到服务目录站点和管理工具时,就会要求通过HTTPS访问。
d) 保存并关闭rest.config 文件。 为ArcGIS Server JAVA 版本配置REST服务,
<a>步骤参考 >></a>

a) 用文本编辑器打开C:\ArcGIS\java\web_output est\WEB-INF\classes\server.properties文件 (如果没有安装在默认位置,这个目录也可能不同);
b) 使用外部服务器的名称和端口,修改下列属性:
com.esri.rest.SOAP_URL=http\://myExternalServer/arcgis/services c) 保存并关闭server.properties 文件;
d) 使用文本编辑器打开C:\ArcGIS\java\web_output est\WEB-INF\classes esources est-config.properties 文件(如果没有安装在默认位置,这个目录也可能不同);
e) 使用外部服务器的名字和端口,修改下列属性:
base.url=http://myExternalServer/arcgis/sdk/rest f) 如果外部服务器为HTTP和HTTPS 使用了非标准端口,更新下列属性映射为非标准端口:
config.reverse-proxy-http-port=80
config.reverse-proxy-ssl-port=443 g) 保存和关闭rest-config.properties文件。

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管理器右侧的活动面板中,单击应用。
如果内部的Web 服务器为HTTP使用了非80端口(HTTPS 使用非443端口),那么配置Web 场服务器端口:
<a>详情查看 >></a>


在ARR 的Release版本中,如果HTTP或HTTPS使用非标准端口, web场(反向代理)服务器必须使用命令提示窗口手动配置。
A) 用管理员权限打开一个命令提示窗口:单击开始>所有程序>附件。在程序列表中,右键命令提示符,单击以管理员身份运行;
B) 在命令提示窗口中,输入下列命令,设置HTTP端口(所有的都在一行);
%windir%\System32\inetsrv\appcmd.exe set config -section:webFarms
-[name='AGSReverseProxy'].[address='myInternalServer'].applicationRequestRouting.httpPort:8080 在这里‘AGSReverseProxy’代表刚创建的Web场的名字,’myInternalServer’ 是内部服务器的名字(或IP地址),8080是内部Web 服务器端口。同样,使用命令行设置HTTPS端口:
%windir%\System32\inetsrv\appcmd.exe set config -section:webFarms -[name='AGSReverseProxy'].[address='internalServer'].applicationRequestRouting.httpsPort:8443 为内部服务器的HTTPS端口调整端口值(8443)。
如果命令返回错误,重新检查上面命令显示的输入路径,并使用正确的web场名和服务器名。
C) 为了确保已经添加了正确值,输入下边命令:
%windir%\System32\inetsrv\appcmd.exe list config -section:webFarms 检测<server> 标签中的<applicationRequestRouting>项的端口是存在的。
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 版本的目录添加规则,
<a>参考 >></a>

/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 应用一个规则) 对于Java版本的目录添加规则,
<a>参考 >></a>

/arcgis/server/proxyoutput
/arcgis/server/proxycache
/arcgis/server/proxyjobs
/arcgis/services
/arcgis/rest
/arcgis/kml
/arcgis/wms
/arcgis/SDK
/arcgis/tokens
/MyWebAdfApplication (每个web 应用一个规则)
(i) 在活动面板的URL重写面板,单击“添加规则…”

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

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

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

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

如果为目录启用了HTTPS,在保存前修改规则属性,
<a>参考 >></a>

为了设置规则解析HTTPS 请求,并且将请求转发给反向代理服务器上的HTTP URL,执行下列操作:
A) 在编辑规则面板中,定义规则的名字反应它用于HTTPS(例如,ReversePorxyServicesHttps).
B) 展开条件设置,单击“添加…”,在添加条件对话框,设置条件输入为{HTTPS}, 设置检查输入字符串是否与模式匹配,并且模式为ON。选中忽略大小写选项,除非规则本身是大小写敏感的。单击OK,在编辑规则面板中设置条件。
C) 在操作设置中,设置方案为https://, 将使用HTTPS发送请求到反向代理服务器。
注意:如果HTTP和HTTPS请求都应该被转发,那么为HTTP添加第二个规则。确保HTTPS规则在URL重写列表中先出现。如果有必要,可以选中一条规则,然后通过上移,下移调整规则顺序。在接收请求时,规则执行是自顶向下的。
(vi) 为了保存规则,单击IIS 管理器右侧操作面板中的“应用”。
为应该代理的每一个目录执行步骤(i)到(vi)。
在离开URL重写规则列表前,检查是否有一个以_loadbalace 结尾的规则已经被添加(当使用URL重写被激活时,ARR扩展可能会添加它)。如果是这样,单击选择,然后在操作面板中“禁用”这个规则。这个规则如果有效,将会传递所有的通信到后端服务器,而不仅仅是上面定义规则的请求。


7、 (可选)在内部服务器配置token service URLs。如果server已经配置了基于token的安全,token service 必须通过反向代理是可用的。

为ArcGIS Server .NET版本配置反向代理,
<a>参考 >></a>

a) 使用文本编辑器打开位于REST应用下的 web.config文件。默认,这个文件位于C:\Inetpub\wwwroot\ArcGIS est.
b) 在<appSettings> 部分,设置<TokenServiceURL> 到外部服务器名和HTTPS 端口。例如:https://myExternalServer/ArcGIS/tokens/.
c) 重复上面两个步骤,设置位于C:\Inetput\wwwroot\ArcGIS est\Services 和C:\Inetput\wwwroot\ArcGIS est\tokens目录下的 web.config文件。 为ArcGIS Server Java 版本配置反向代理,
<a>参考 >></a>

a) 为services应用编辑arcgis_wshandler.properties文件。默认,这个文件位于:C:\Program Files\ArcGIS\java\web_output\services\ WEB-INF \ classes。
b) 找到arcgis.webservices.security.tokenserviceurl 属性,并且改变机器名为myExternalServer:
arcgis.webservices.security.tokenserviceurl=http://myExternalServer/arcgis/tokens c) 保存和关闭文件。
d) 为rest应用编辑security.xml文件。默认,这个文件位于:C:\Program Files\ArcGIS\java\web_output est\WEB-INF\classes.
e) 找到“TokenServiceURL”键,并且改变机器名为myExternalServer:
<entry key="TokenServiceURL">http://FLASH6/arcgis/tokens</entry> f) 保存并关闭文件。
g) 重启ArcGIS Server Manager服务。
说明:如果运行在内部服务器的Web ADF应用使用了基于token安全的服务,那么ADF 应用必须能够通过在services的web.config中配置的外部URL与token service 通信。一些组织可能不允许通过内部服务器访问DMZ局域网络。如果有必要,可以修改防火墙/路由规则,以便内部服务器可以对位于外部服务器上的token service进行访问。


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

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

说明:如果站点启用了SSL,将上面的HTTP替换为HTTPS.

说明:对于REST服务的服务URLs,可以通过访问外部服务器的服务目录获得。

说明:只有对ArcGIS Server Web services的Internet连接可能用到这些URLs。为了管理ArcGIS Server ,使用Manager或ArcCatalog连接到内部服务器。

说明:为了增加安全性,让系统管理员限制从内部防火墙到反向代理Web服务器IP地址的HTTP通道。这将阻止来自internet 的用户直接访问开放的内部HTTP端口。
说明:为了增加安全,让系统管理员为HTTP通道配置过滤器,以确保从反向代理web 服务器阻止公认恶意包类型。



9、 (可选)使用Manager或IDE创建并发布一个新的ArcGIS Server Web ADF 应用以便可以用反向代理服务器工作。
当创建一个新的ArcGIS Server Web ADF 应用,将指定的Internet服务添加到应用中时,使用前面步骤中配置的新的外部服务 URLs 。
在创建新应用后,将它的路径添加到步骤6中定义的web发布规则。



10、 (可选)编辑原有的使用内部 URLs地址添加地图服务的ArcGIS Server Web ADF应用。
引用内部URLs地址添加地图服务的web 应用,在组织的防火墙外将不会正常工作。为了转换应用工作在反向代理web 服务器下,他们必须被手动编辑。
a) 在内部Web服务器上配置ArcGIS Server Web 应用。

对于 .NET,
<a>参考 >></a>

1) 在Visual Studio, Visual Web Developer Express,或其它开发环境中,打开Web 应用。如果没有开发工具,也可以通过文本编辑器编辑页面。
2) 打开包含Web ADF控件的Web 页面。在 ASP.NET应用中,默认为Default.aspx。
3) 为每个resource manager 控件中的每个服务修改URL,引用服务的外部URL。对于MapResourceMangager控件,每个资源项包含一个或多个资源。打开每个资源的属性,并且找到服务的URL。如果连接为ArcGIS Internet 方式,将URL切换到使用外部服务器;例如:
http://myExternalServer/arcgis/services
说明:如果防火墙阻止从内部服务器到外部服务器的http连接,在点击资源定义编辑器中的浏览按钮时,可能不会列出服务。这种情况,手动修改URL引用外部web服务器。
设置资源的URLS 时,可以参考下面的页面:
Using the MapResourceManagerControl
4) 保存文件。
5) 如果在应用中的其它页面中也包含ESRI Web 控件,为每个页面重复2)到4)步骤设置。
6) 重新编译,如果有必要,重新部署应用。 对于 Java,
<a>参考 >></a>

使用Manager Web应用将应用部署到Web server的最好方式是遵循下列步骤,重新创建它们。
说明:这个步骤仅在将应用暴露和部署到第三方的Web应用服务器时执行。
1) 在Web应用部署的目录,导航到WEB-INF目录。
2) 编辑“faces-config.xml”文件。找到“endPointURL”属性,并且将它的内部URL值改为第三步中创建的新的外部URLs。例如,如果原始URL为
http://myInternalServer:8399/MyServices/MapServer, 改变这行为
http://myExternalServer/MyServices/MapServer。详情看下面的例子:

之前:
<managed-property>
<property-name>endPointURL</property-name>
<value>http:// myInternalServer:8399/MyServices/MapServer</value>
</managed-property>
之后:
<managed-property>
<property-name>endPointURL</property-name>
<value>http://myExternalServer/MyServ ... gt%3B
</managed-property>
3) 如果Web 应用服务器被配置为改变后自动重载应用程序,那么Web 应用会在下次被访问时,工作在反向代理服务器下。否则,Web 应用服务器应该被重启。
b) 为a)步骤中要编辑的ArcGIS Server Web ADF应用配置反向代理web服务器,这个过程类似于步骤6中的操作将它的路径添加到web 发布规则。

c) 测试站点,以确保它可以在Internet环境下正确工作,
<a>参考 >></a> 。

1) 在计算机上打开一个Web浏览器,尽可能使用组织网络之外的Internet。也可以采用位于DMZ网络的另外一台(非外部服务器)服务器进行测试。
2) 输入外部服务器的URL和站点名。例如,如果站点名配置为myADFApplicaiton,URL应为:
http://myExternalServer/myADFApplication
3) 如果有任何错误,或者站点没有完成加载,重新检查这里介绍的所有设置。

    错误提示:
  1. 如果站点根本没有加载(页面无法找到,404 error), 检查步骤(b)中涉及的代理设置。
  2. 如果外部框架页面加载了,但是没有地图,或显示脚本错误,检查步骤(1)中关于ESRI Web控件的设置。
  3. 如果外部框架页面加载了,并且没有脚本错误,但是也没有地图加载,那么问题可能是地图的配置不正确。从外部服务器上,使用下面三种方法测试地图服务是否可以预览: ①使用安装在组织防火墙之外或者位于DMZ网络上的ArcGIS Desktop(ArcCatalog,ArcMap); ②如果内部用户可以访问外部服务器(myExternalServer),使用内网的ArcGIS Desktop。使用Desktop基于myExternalServer连接服务:使用添加数据按钮,展开GIS Servers,双击Add ArcGIS Server, 然后选择USE GIS Services, 使用URL添加Server作为ArcGIS Internet 服务器,“ArcGIS Server Web services(SOAP和REST)现在可以被访问…”。 ③在浏览器中输入下列URL: http://myExternalServer/arcgis/serviceswsdl http://myExternalServer/arcgis ... rwsdl 改变第二个URL以匹配你系统上的服务。浏览器应该加载一个xml(wsdl)文档。如果这些方法连接服务均失败,那么重新检查步骤5中的代理设置,步骤2和3中的目录设置。
  4. (仅限IIS7/Application Request Routing )如果在ArcCatalog或Manager中可以列出Server上的所有服务列表, 但是对服务的细节或显示服务的请求失败,可以检查为服务目录创建的URL 重写规则,已经将模式类型设置为通配符,而不是正则表达式。

为内部服务器上的每个Web应用重复步骤(a)到(c), 以确保可以被外部用户访问。

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



相关信息:
  1. Application Request Routing home page at IIS.net
  2. Using the Application Request Routing Module
  3. Application Request Routing - Release Candidate download (x86)
  4. Application Request Routing - Release Candidate download (x64)
  5. HowTo: Configure a reverse proxy system architecture with ArcGIS Server




创建时间:2008-12-03
最近更新: 2010-12-08


原文链接
http://support.esrichina.com.cn/2008/1203/983.html

要回复问题请先登录注册