使用 Apache HTTP 實例支持 Tomcat 的最簡單方法 (Simplest way to back Tomcat with an Apache HTTP instance)


問題描述

使用 Apache HTTP 實例支持 Tomcat 的最簡單方法 (Simplest way to back Tomcat with an Apache HTTP instance)

I have a single Tomcat 6 instance that frequently needs to be rebooted because of PermGen issues after multiple WAR deployments.

In a Production environment it's clearly bad practice to take down the site, leaving any visitors with nothing but a connection failure. The big picture is to set up a fail‑over Tomcat cluster of one or two more instances, but for now I'd like a simple solution:

When Tomcat is down, all requests are forwarded to an Apache HTTP server running 1 simple "Site is under maintenance" type page.

I assume I need some small, super fast proxy to sit in front of Tomcat, feeding it requests and monitoring its health. If it dies, it simply sends those requests to Apache HTTP.

Ideas?

‑‑‑‑‑

參考解法

方法 1:

You could just generally use Apache in front of your tomcat install. Set up a redirect proxying rule to your tomcat. If that doesn't work, apache will send a "503 Service Temporarily Unavailable" which you could configure to be your maintenance page.

The apache application file would look somewhat like this

<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>

The first rewrite rule changes all files in below a certain URI ( /static/ ) to a directory from which those static files are served directly without proxying. You could use this to serve all static resources from your website, too, which would somewhat make up for the general (small) performance loss of having an apache in front of your tomcat.

The ErrorDocument directive changes the normal 503 response to the document site_down.html lying in this static path.

For this to work you need to enable mod_rewrite and mod_proxy/mod_proxy_http and enable the proxy in your apache2 config

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

(by Robert Campbellfforw)

參考文件

  1. Simplest way to back Tomcat with an Apache HTTP instance (CC BY‑SA 3.0/4.0)

#apache #cluster-computing #tomcat #failover






相關問題

多個相同的 url htaccess 重定向 (Multiple same url htaccess redirect)

無法在 XAMPP 中進行 301.htaccess 重定向 (Cannot 301.htaccess redirect in XAMPP)

Tối ưu hóa truy vấn MySQL PHP - Phản hồi (MySQL PHP Query Optimization - Feedbacks)

域和子域之間的不同會話 (Different session between domain and subdomain)

CXF REST 服務中配置日誌的問題 (Issue in configuring log in CXF rest service)

lighttpd:身份驗證後如何將端口(僅對本地主機可見)轉發到 WAN? (lighttpd: How to forward port (visible only to localhost) to WAN after authentication?)

mod-rewrite 結合了兩種不同的重寫規則 (mod-rewrite combine two different rewrite rules)

過期/緩存控制標頭的問題 (Problem with Expires/Cache-Control Headers)

安全的 PHP 文件上傳 (Secure PHP file uploading)

Apache:如何在未安裝 mod_expires 的情況下將 Expires 標頭添加到文件中 (Apache: How to add Expires headers to files without mod_expires installed)

mod_rewrite 詞法比較 (mod_rewrite lexical comparison)

.htaccess https、www 和子域靜默重寫 (.htaccess https, www and subdomain silent rewrite)







留言討論