源文地址:http://zazawind.appspot.com/?p=64001
转载请注明来源 http://zazawind.3snavi.com
08年底写过一篇关于OpenLayers跨域请求WFS服务在IIS下设置代理Proxy.py的文章,可以解决IIS下对Python的代理支持。一直没有在Tomcat下设置过,这次有机会将tomcat下实地设置代理Proxy.cgi的方式整理出来,以飨读者。
容器环境:Tomcat 6.0.29
代理应用: mapproxy
实验环境:OpenLayers写的应用mapproxy部署在Tomcat下(如http://localhost:8090/mapproxy/map.html),WFS服务位于远程服务器如http://remoteserver:8080/geoserver/wfs,此环境下必须使用代理。下面讲述mapproxy应用添加proxy.cgi代理支持步骤。
1.下载Proxy.cgi文件,在allowedHosts数组段内添加远程地址’remoteserver:8080’。
2. Tomcat支持cgi代理程序
在mapproxy应用程序的Web.xml添加如下内容:
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>c:/Python27/python.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
<!-- The mapping for the default servlet-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi/*</url-pattern>
</servlet-mapping>
3. 在Tomcat的Context.xml (位于Tomcat/conf/文件夹下)文件对<Context>节点增加属性
<Context privileged=”true”>
4. 将Proxy.cgi文件置于WEB-INF/cgi文件夹下。
5. 运行测试。浏览器上访问:http://localhost:8080/mapproxy/cgi/proxy.cgi,正常情况下反馈的是OpenLayers的主页。
成功完成。