反向代理
PTC 基于 Web 的产品支持用户从防火墙内部和外部登录到站点。当用户从防火墙外部登录到 PTC 产品时,PTC 可帮助用户最大限度地降低入侵者对基础架构造成的风险。想要允许外部企业资源访问 PTC 提供的基于企业 Web 的应用程序,有一种方法是使用反向代理配置。
以下部分介绍了如何架构和配置各种解决方案的基础知识,以及如何对其进行配置。并非所有可能的配置均已记录。使用这些部分进行自我培训,然后将您学到的内容应用到实际用例中。
后台
反向代理是代理服务器的一种特殊部署情况。在反向代理中,反向代理服务器可位于以下位置:
防火墙外部
防火墙内部
非管制区域 (DMZ) (即两个防火墙之间的一个区域) 内,表示面向外部客户端的内容服务器
反向代理部署可供公开 Web 服务器提供的特定内容,而无需实际向客户端公开 Web 服务器。
在反向代理中,对于其所服务的客户端,代理服务器的功能类似于 Web 服务器。与内部客户端不同,外部客户端不会重新配置为访问代理服务器。相反,站点 URL 会将客户端路由到代理,如同它是 Web 服务器一样。复制的内容会从代理缓存传送到外部客户端,而不会公开原始服务器或安全位于防火墙后面的专用网络。
下图显示了反向代理配置的一些基本组件。在此图中,代理服务器位于两个防火墙之间:
该类型的配置是基本配置。两个防火墙之间的区域称为非管制区域 (DMZ)。如果有人控制了代理服务器,则该人员将无法控制应用程序服务器,也无法了解应用程序服务器的位置。请注意客户端系统和代理服务器之间以及代理服务器与 Web 服务器之间的防火墙。其中第二个防火墙可提供一个非常安全的环境。
基本反向代理配置
为使用反向代理服务器而设置用户环境会涉及使用两个主机:
在一台主机上,设置 Web 服务器,以用作代理 Web 服务器。例如,在名为 server1.mycompany.com 的 server1 主机上安装 HTTP Server
在另一台主机上,安装 Windchill。例如,在名为 server2.mycompany.com 的 server2 主机上安装 Windchill
在每台主机上都有待完成的特有任务:
Windchill 服务器主机 (server2) 上,更新以下内容:
wt.properties,如“更新 Windchill 主机上的 wt.properties”部分中所述。
web.xml,如“更新 Windchill 主机上的 web.xml”部分中所述。
在代理服务器主机 (server1) 上,按照“更新 Windchill 主机上的 wt.properties”部分中的说明更新代理 Web 服务器的 httpd.conf 文件。
此外,还可以设置反向代理服务器以使用 HTTPS 进行安全访问,如“将 HTTPS 与反向代理服务器配合使用”部分中所述。
更新 Windchill 主机上的 wt.properties
* 
当更新 wt.properties 文件时,请使用 Windchill shell 中的 xconfmanager 实用程序。有关使用此实用程序的信息,请参阅关于 xconfmanager 实用程序
对于要求通过反向代理进行访问的客户端而言,应将 Windchill 主机名解析成反向代理服务器地址。要生成引用反向代理服务器的引出 Windchill URL,必须在 wt.properties 文件中设置下列特性。这些特性将 Windchill 服务器代码库映射到反向代理代码库:
wt.server.codebase=http://<proxy_server_host_name>[:<port>]/<web_app_name>
wt.httpgw.mapCodebase=http://<Windchill_host_name>[:<port>]/<web_app_name>
反向代理 wt.properties 示例
假定下列陈述符合事实:
完全限定的反向代理主机名为 server1.mycompany.com。
完全限定的 Windchill 主机名为 server2.mycompany.com。
两个主机上的 Web 服务器都使用默认端口。
wt.adapter.simpleTaskDispatcher.minPort 特性 (<task_dispatcher_minPort>) 中的值为默认值 18080。
Windchill 安装在 Windchill 服务器主机上时定义的 Web 应用程序名称 (<web_app_name>) 为 Windchill
然后,要使用 xconfmanager 实用程序设置的 wt.properties 特性如下:
wt.rmi.clientSocketFactory=wt.boot.WTRMIMasterSocketFactory
wt.rmi.javarmicgi=servlet/JavaRMIServlet
wt.server.codebase=http://server1.mycompany.com/Windchill
wt.httpgw.mapCodebase=http://server2.mycompany.com/Windchill
更新 Windchill 主机上的 web.xml
web.xml 文件 (位于 codebase 目录的 WEB_INF 子目录下) 的 JavaRMIServlet servlet 声明中设置的端口会通过端口范围自动处理。范围的使用是从最小值开始一直到最高值。这些值存储在 wt.properties 文件的以下特性中:
wt.manager.port
wt.method.minPort
wt.method.maxPort
要更改范围,请使用 xconfmanager 实用程序来设置特性。
minPort 和 maxport 的默认值为 50025011
<servlet>
<servlet-name>JavaRMIServlet</servlet-name>
<description>RMI over HTTP proxy</description>
<servlet-class>wt.tools.javarmi.JavaRMIServlet</servlet-class>
<init-param>
<param-name>minPort</param-name>
<param-value>5002</param-value>
</init-param>
<init-param>
<param-name>maxPort</param-name>
<param-value>5011</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JavaRMIServlet</servlet-name>
<url-pattern>/servlet/JavaRMIServlet/*</url-pattern>
</servlet-mapping>
将基于 Apache 的 Web 服务器配置为反向代理服务器
本部分旨在提供一个反向代理示例,其中有关配置 Apache httpd 服务器的详情很少。PTC 不支持任何特定的反向代理产品。每个反向代理实施都有其自己的要求,需由系统和网络管理员进行评估。
移除 httpd.conf 文件中以下各行中的注释字符:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
httpd.conf 文件的末尾添加以下行 (某些行已进行拆分以适应页面宽度):
ProxyPass /<web_app_name> http://<Windchill_host_name>/<web_app_name>
ProxyPassReverse /<web_app_name> http://<Windchill_host_name>/<web_app_name>
/* To access Solr URL on Reverse Proxy Server */
ProxyPass /<web_app_name>-Solr http://<Windchill_host_name>[:<port>]/<web_app_name>-Solr
ProxyPassReverse /<web_app_name>-Solr http://<Windchill_host_name>[:<port>]/<web_app_name>-Solr
其中,<web_app_name><Windchill_host_name> 的值与您在“更新 Windchill 主机上的 wt.properties”部分中输入的值相同。
将 HTTPS 与反向代理服务器配合使用
使用反向代理服务器时,通常要求所有引入通信的协议是 HTTPS。HTTPS 反向代理服务器可使用先前记录的配置步骤来代理 Windchill 的 HTTP Web 服务器。但是,对反向代理服务器 URL 的任何引用都需要引用 HTTPS 协议和正确的端口,而不引用 HTTP 协议。如果要求外部用户使用 HTTPS,而允许内部用户使用 HTTP,则应使用两台 Windchill 服务器,其中一台采用 HTTPS URL 配置,另一台采用 HTTP URL 配置。有关 HTTPS URL 和 HTTP URL 的详情,请参阅 HTTP 和 HTTPS 协议双系统
这对您有帮助吗?