小编rvd*_*vdb的帖子

为 Tomcat Web 应用程序添加全局 URI 前缀

我正在设置一个反向代理配置,其中路径以“/apps/”开头的所有请求都应该由 Apache 代理到 Tomcat。这个 IMO 有两个好处:它可以只为 URI 空间的“/apps/”部分保留代理,并且只对所有 Tomcat 应用程序使用一个代理规则(即对任何 Tomcat 应用程序的请求应该从'/应用/')。

例如,对http://mydomain/apps/my_app/ 的请求应该被代理到http://localhost:8082/my_app/。请注意 Tomcat URI 中没有“/apps/”前缀:“my_app”位于 ${CATALINA_HOME}/webapps/my_app 的常规位置。

我在 Apache vhost.conf 文件中使用以下代理规则实现了这一点:

ProxyPreserveHost    on
ProxyPass            /apps/    http://localhost:8082/
ProxyPassReverse    /apps/    http://mydomain/
Run Code Online (Sandbox Code Playgroud)

(注意:我使用了 ProxyPreserveHost,因为我的 Tomcat 应用程序需要访问原始主机以生成更多链接)。一切顺利,除了由我的 Tomcat 应用程序的一部分生成的绝对链接。鉴于上述配置,我的 Tomcat 应用程序将“看到”这个请求:http://mydomain/my_app,因此生成没有“/apps/”前缀的链接,应该触发这些链接的代理。

我花了一些时间,但我现在明白这是代理的基本特征,并且没有“标准”方式将原始请求的“/apps/”前缀传递给代理应用程序。因此,我开始研究另一种可能性,即为所有 Tomcat 应用程序定义一个全局前缀,并使用以下设置代理 Tomcat 应用程序:

ProxyPreserveHost    on
ProxyPass            /apps/    http://localhost:8082/apps/
ProxyPassReverse    /apps/    http://mydomain/apps/
Run Code Online (Sandbox Code Playgroud)

这会将http://mydomain/apps/my_app/ 的请求代理到http://localhost:8082/apps/my_app/。由于 Tomcat 服务器上的所有应用程序都将通过代理访问,因此我认为所有 Tomcat 应用程序都需要这个“/apps/”前缀。

到现在为止还挺好。然而,我在这种方法的 Tomcat 方面苦苦挣扎:找到一种方法为 Tomcat 应用程序的请求添加全局路径前缀。我得到的最接近的是: 1. 不要接触 Tomcat 应用程序的物理位置:将它们留在 ${CATALINA.HOME}/webapps 2. 更改 …

configuration tomcat uri apache-2.2

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

apache-2.2 ×1

configuration ×1

tomcat ×1

uri ×1