使用 apache 作为 Glassfish 的前端

Use apache as frontend to Glassfish

有没有可能做我想做的事?

我有一个域 - example.com - 安装在网络服务器 Ubuntu 16.04/Apache 上。

在 Apache 后面,我 运行 标准端口 8080 上的标准 Glassfish(实际上是 Payara)。

在 Payara 上,我有一个 webapp - myWebapp - 部署在根上下文 /

当我将我的兄弟直接指向端口 8080 时,它显示了我预期的网络应用程序:

http://example.com:8080/ => webapp shown.

1) 首先我想把我的 Payara 隐藏在 apache 后面并确保人们写的时候

http://example.com/ the are redirected to

https://example.com => myWebapp is shown.

这部分使用 AJP 工作,我的证书都已到位。

在我的default.conf在

<VirtualHost *:80>

已插入以下行:

Redirect permanent / https://example.com

它负责重定向到 HTTPS。但我怀疑这是否是正确的方法。

conf 文件中的所有其他内容都是标准的。

在我的 ssl.conf 文件中

<virtualHost *.443>

我已插入

ServerName example.com 

和 SSL 证书的路径。它按预期工作。

我还添加了更多内容

ProxyPass / ajp://127.0.0.1:8009
ProxyPassReverse / ajp://127.0.0.1:8009

同样,这很有效。如果我写

http://example.com

我被重定向到

https://example.com/ => myWebapp is shown.

这太完美了。

但是如果我写

http://example.com/phpmyadmin

例如,我没有看到 phpmyadmin 页面。

我怎样才能做到这一点,这有可能吗?

感谢您的帮助。

您在以下配置中存在冲突:

ProxyPass / ajp://127.0.0.1:8009
ProxyPassReverse / ajp://127.0.0.1:8009

这会将所有 http 请求以及 http://example.com/phpmyadmin 发送到您的 Payara 服务器

你需要的是

ProxyPass /myWebapp ajp://127.0.0.1:8009
ProxyPassReverse /myWebapp ajp://127.0.0.1:8009

这样只有以 /myWebapp 开头的相对 URL 才会重定向到您的 Payara 服务器,而 /phpmyadmin 仍由 Apache 托管。

Apache documentation提到:

Only specific URIs can be proxied, as shown in this example:

ProxyPass "/images"  "http://www.example.com/"
ProxyPassReverse "/images"  "http://www.example.com/"

In the above, any requests which start with the /images path with be proxied to the specified backend, otherwise it will be handled locally.