我有一个apache httpd服务器,说 server1 *(公开公开),它使用mod_cluster充当某些jboss服务器(防火墙后面)的负载均衡器。现在我想在几台apache服务器上安装静态内容(images / css / htmls)和一些cg脚本,比如** server2 和 server3 (防火墙后面)。
现在我希望 server1 充当这些server2和server3的负载均衡器以及jboss服务器。
通过这种安排,对jboss上部署的应用程序的任何请求都需要路由到jboss,任何静态内容请求都应该转到 server2 或 server3 。
以下是我正在使用的版本
Linux服务器 apache httpd - 2.2.22 JBOSS-EAP-6
我需要在 server1 中使用哪种机制/配置才能实现? 请看看是否有人可以提供帮助。
答案 0 :(得分:1)
好吧,你只需添加一个ProxyPass设置。 mod_cluster与ProxyPass兼容,因此您可以同时使用它们。
例如,如果我希望gif图像由httpd而不是AS7提供,我可以添加:
ProxyPassMatch ^(/.*\.gif)$ !
此外,如果你设置
CreateBalancers 1
mod_cluster不会为您创建代理,您必须自己创建代理。这为您提供了额外的控制。例如:
ProxyPassMatch ^/static/ !
ProxyPass / balancer://qacluster stickysession=JSESSIONID|jsessionid nofailover=on
ProxyPassReverse / balancer://qacluster
ProxyPreserveHost on
在上述示例中,我们向工作人员代理除/ static / content之外的任何内容。
注意:如果您遇到任何与Cookie相关的问题,您可能需要使用ProxyPassReverseCookieDomain和ProxyPassReverseCookiePath。
在我的配置中注意 qacluster 。默认为 mycluster ,因此,为了命名我的balancer qacluster,我将其添加到mod_cluster配置(在VirtualHost之外):
ManagerBalancerName qacluster
如果不清楚,只需回复,我可以尝试进一步详细说明。
答案 1 :(得分:0)
我遇到了同样的问题,我们使用Apache HTTP服务器获取静态内容,使用JBOSS AS 7服务器获取动态内容(JSF Web应用程序)。
因此,在Load模块的末尾添加以下属性告诉
CreateBalancers 0
告诉“0:在httpd中定义的所有VirtualHosts中创建。”
更多信息:http://docs.jboss.org/mod_cluster/1.2.0/html/native.config.html#d0e485
以下配置解决了图像和样式表无法显示的问题。
<VirtualHost *:80>
ServerName dev.rama.com
DocumentRoot "/var/www/assests"
UseAlias 1
ProxyPassMatch ^(.*\.bmp)$ !
ProxyPassMatch ^(.*\.css)$ !
ProxyPassMatch ^(.*\.gif)$ !
ProxyPassMatch ^(.*\.jpg)$ !
ProxyPassMatch ^(.*\.js)$ !
ProxyPassMatch ^(.*\.png)$ !
<Directory /var/www/assests>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
注意: 我们对Web应用程序的所有声明都在HTTP服务器上 / var / www / assests和我访问的url是端口80上的dev.rama.com
所以当它看到 ProxyPassMatch ^(。*。css)$!时 网络服务器知道css文件是http服务器的本地文件,我们不需要去Jboss App服务器。
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
的更多信息