【问题标题】:Simplest way to back Tomcat with an Apache HTTP instance使用 Apache HTTP 实例支持 Tomcat 的最简单方法
【发布时间】:2012-07-02 14:58:44
【问题描述】:

我有一个 Tomcat 6 实例,由于多次 WAR 部署后的 PermGen 问题,它经常需要重新启动。

在生产环境中,关闭网站显然是一种不好的做法,只会让任何访问者连接失败。大局是设置一个或两个以上实例的故障转移 Tomcat 集群,但现在我想要一个简单的解决方案:

当 Tomcat 关闭时,所有请求都被转发到运行 1 个简单“站点正在维护”类型页面的 Apache HTTP 服务器。

我假设我需要一些小型、超快速的代理来坐在 Tomcat 前面,为它提供请求并监控它的运行状况。如果它死了,它只是将这些请求发送到 Apache HTTP。

想法?

【问题讨论】:

    标签: tomcat apache cluster-computing failover


    【解决方案1】:

    您通常可以在安装 Tomcat 之前使用 Apache。为您的 tomcat 设置重定向代理规则。如果这不起作用,apache 将发送一个“503 服务暂时不可用”,您可以将其配置为您的维护页面。

    apache 应用程序文件看起来有点像这样

    <VirtualHost *>
        ServerName example.com
        ServerAlias *.example.com
        ServerAdmin admin@example.com
    
        RewriteEngine on
        RewriteRule ^/static/(.*) /some/path/for/static/files/static/$1 [L]
        RewriteRule ^(.*) http://127.0.0.1:8080$1 [P]
    
        ErrorLog /var/log/apache2/example/error.log
    
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
    
        CustomLog /var/log/apache2/example/access.log combined
        ServerSignature On
    
        ErrorDocument 503 /static/site_down.html
    </VirtualHost>
    

    第一个重写规则将某个 URI ( /static/ ) 下的所有文件更改为一个目录,从该目录中直接提供这些静态文件而无需代理。您也可以使用它来提供您网站上的所有静态资源,这将在一定程度上弥补在您的 Tomcat 前安装 apache 造成的一般(小)性能损失。

    ErrorDocument 指令将正常的 503 响应更改为位于此静态路径中的文档 site_down.html。

    为此,您需要启用 mod_rewrite 和 mod_proxy/mod_proxy_http 和 在你的 apache2 配置中启用代理

    <Proxy *>
            Order Deny,Allow
            Deny from all
            Allow from all
    </Proxy>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-11
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2019-04-07
      • 1970-01-01
      • 2016-10-30
      相关资源
      最近更新 更多