Apache - Tomcat ProxyPass VirtualHost - 上下文路径

标签 apache tomcat proxypass

我在为两个在 tomcat 中具有两个不同上下文路径的应用程序配置 apache tomcat ProxyPass 指令时遇到问题。 tomcat 在 apache 后面运行,我使用 apache 代理请求到 tomcat 的路径。在 apache 中,我想通过主机名而不是上下文路径访问这两个应用程序。

场景:

Tomcat

https://domain:8443/app1
https://domain:8443/app2

在 tomcat 中,应用程序具有上下文路径 app1 和 app2

在 apache 中,我想按如下方式启用这两个应用程序:

https://app1.host/
https://app2.host/

在 apache 中,我为每个域创建了一个配置:

ProxyPass /  https://localhost:8443/app1
ProxyPassReverse / https://localhost:/8443/app1

奇怪的是 app1 只能通过使用上下文路径的 apache 访问:

https://app1.host/app1

是否可以使用 apache ProxyPass 模块实现这样的设置?

感谢您的帮助。

最佳答案

您应该能够通过使用虚拟主机获得您想要的结果。通过 AJP 协议(protocol)而不是 HTTPS 将请求传递给 tomcat 也是一个好主意。尝试将其添加到 Apache 配置中

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName app1.host
    ProxyPass / ajp://localhost:8009/app1/
</VirtualHost>

<VirtualHost *:443>
    ServerName app2.host
    ProxyPass / ajp://localhost:8009/app2/
</VirtualHost>

如果您没有更改 Tomcat 的默认服务器设置,这应该可以正常工作。否则请确保指定在 Tomcat 的 conf/server.xml 文件中配置的 AJP 端口。应该有类似这样的一行:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

确保您在 Apache 配置中加载了 mod_proxy 和 mod_proxy_ajp 模块,这可能因您的 Apache 安装而异。还要删除任何以前配置的“ProxyPass/...”行,因为它们会干扰新配置。希望这对你有用。

关于Apache - Tomcat ProxyPass VirtualHost - 上下文路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607922/

相关文章:

php - 在 Ubuntu 上,我的 Hello world PHP 文件应该放在哪里?

apache - 将所有 URL 重定向到 httpd.conf 中的单个页面

tomcat - GroovyServlet 在成功加载一次后对所有请求返回 404?

apache - 设置 Apache2 ubuntu 非 ssl 服务器来处理传入的 wss ://

.htaccess - 使用 .htaccess 更改显示的 URL,但不实际重定向内容?

apache - 带有 Tomcat/Apache ProxyPass 的 Grails URL

ruby-on-rails - Ruby on Rails redirect_to 相对 URL

apache - 允许 Amazon CDN 绕过 HTTP 基本身份验证

tomcat - Railo 如何像在 Tomcat 中一样在树脂中输入 Servlet 映射 url 模式

linux - 在哪里可以找到适用于 Linux 的 Railo 3.2.1 安装程序?