Apache2/glassfish|tomcat:将 80 上的部分(但不是全部)请求重定向到端口 8080 上的 glassfish,管理屏幕在哪里?

Apache2/glassfish|tomcat:将 80 上的部分(但不是全部)请求重定向到端口 8080 上的 glassfish,管理屏幕在哪里?

使用该答案:如何将端口 80 上的流量重定向到 Tomcat 端口 8080,同时仍允许服务器在端口 80 上发送/接收

我已将我的 apache2 服务器配置为将一些请求重定向到 8080 上的 glassfish:

<VirtualHost *:80>
(...)
ProxyPass /tomcat/ http://localhost:8080/
ProxyPassReverse /tomcat/ http://localhost:8080/
ProxyPass /tomcat-admin/ http://localhost:4848/
ProxyPassReverse /tomcat-admin/ http://localhost:4848/
</VirtualHost>

http://my.server.org/tomcat/,我可以清楚地看到:

 GlassFish Server 3.1.2
Your server is now running

http://my.server.org/tomcat-admin/返回空白的屏幕,但我可以看到管理页面的 HTML 源代码,所以我猜想有些资源无法加载。我该如何解决这个问题?

另一个问题:如果我的 java web 应用程序使用http安全,我应该补充一下:

ProxyPass /tomcat-secure/ http://localhost:8443/
ProxyPassReverse /tomcat-secure/ http://localhost:8443/
</VirtualHost>

答案1

不幸的是,我对 apache-proxy 一无所知。不过,我遇到了类似的问题,我的解决方法可能有助于您解决问题。

我使用 将 tomcat 完全集成到 apache 中mod-jk。假设您使用的是基于 Debian 的发行版,只需libapache2-mod-jk在 中安装和配置模块/etc/libapache2-mod-jk/workers.properties即可。您可能需要类似以下内容:

worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13

这些参数定义了 apache 和 tomcat 之间的连接。我告诉 tomcat 只监听127.0.0.1。但如果您需要一个独立的 tomcat 安装(无需 apache),那么将模块配置为与另一个 IP 和/或不同的端口通信应该没问题。

下一步:打开/etc/apache2/mods-available/jk.conf并确保 apache 读取这些属性:

JkWorkersFile /etc/libapache2-mod-jk/workers.properties

如果完成这些,apache 和 tomcat 之间的通信应该可以正常工作。现在您可以创建一些主机将其请求转发到 tomcat:

<VirtualHost *:80>
    [...]
    ServerName your.host.tld
    [...]
    RewriteEngine on
    RewriteRule ^/(.*)$ /YourContext/$1 [L,PT]
    JkMount /* ajp13_worker
    [...]
</VirtualHost>

YourContext此虚拟主机将每个请求转发到tomcat 的上下文。ajp13_worker是之前在中配置的 worker 定义/etc/libapache2-mod-jk/workers.properties(当然,您可以为不同的 IP/端口配置多个 worker),并且RewriteRule重写查询以在其前面加上前缀YourContext。因此,如果尚未启用重写模块,您还需要重写模块。启用模块和此主机:

a2enmod jk
a2enmod rewrite
a2ensite 007-what-ever-host
service apache2 restart
service tomcat7 restart

并执行http://your.host.tld/abc?some=query。希望您最终得到的结果与调用 时的结果相同http://your.host.tld:8080/YourContext/abc?some=query

希望有帮助;-)

相关内容