Apache2 / glassfish | tomcat:将80上的一些(但不是全部)请求redirect到端口8080上的glassfish,pipe理屏幕在哪里?

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

我已经configuration我的apache2服务器redirect一些请求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/返回一个空白的屏幕,但我可以看到pipe理页面的HTML源,所以我想有些资源不能加载。 我应该如何解决这个问题?

另一个问题:如果我的Java Web应用程序使用httpS ,我应该只是添加:

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

不幸的是,我不知道这个Apache代理的东西。 不过,我有类似的问题,我的解决方法可能会帮助您解决您的问题。

我完全使用mod-jk将tomcat集成到apache。 假设您使用的是基于Debian的发行版,只需安装libapache2-mod-jk并在/etc/libapache2-mod-jk/workers.propertiesconfiguration该模块。 你可能需要这样的东西:

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

这些参数定义了apache和tomcat之间的连接。 我告诉tomcat只能听127.0.0.1 。 但是,如果你需要一个独立的tomcat安装而不使用apache,那么configuration这个模块就可以和另一个IP和/或不同的端口对话。

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

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

如果这样做,apache和tomcat之间的通信应该工作。 现在你可以创build一些主机把他们的请求转发给tomcat:

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

这个虚拟主机将把每个请求转发到tomcat上下文YourContextajp13_worker是之前在/etc/libapache2-mod-jk/workers.propertiesconfiguration的工作定义(当然你可以为不同的IP /端口configuration多个工作者), 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 ,则希望获得相同的结果。

希望有帮助;-)