kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

Apacheとtomcat連携

参考にしたサイト

Apache-tomcat連携の王道というか、連携方法のサイト


http://trasis.jp/blog/lab/2008/08/apache-tomcat%E3%81%A7%E8%B2%A0%E8%8D%B7%E5%88%86%E6%95%A3.html
apache, tomcatで負荷分散

http://unixlife.jp/java/mod-proxy-ajp.html
ApacheTomcatの連携
各プロパティ(パラメータの説明が記載されている)

http://d.hatena.ne.jp/pomo123/20081107/1226048548
セッション管理はなし

http://homepage1.nifty.com/y-osumi/works/code/tomcat_cluster/

http://m97087yh.seesaa.net/article/109049513.html






各パラメータの詳細や説明やサンプル

    • ProxyPassMatch


http://d.hatena.ne.jp/rx7/20071220/p1

ProxyPassMatch /(app|test)/(.*) http://192.168.1.100:3000/$1/$2

mod_proxy_httpだけど、ajpの場合でも利用できそう


http://d.hatena.ne.jp/Ochotona/20080605/1212664140
例えば、/admin配下の〜.doだけajpに渡したい場合はこれだけ
ProxyPassMatch ^/admin/.*\.do ajp://localhost:8009/


http://yamashiro0110.hatenadiary.jp/entry/2014/03/11/020016
正規表現にマッチしたURLに対してProxyする設定
test1/test1.htmlの場合、test2/test1.htmlにproxyするという意味
ProxyPassMatch ^/html/test1/test([0-9]{1})\.html http://192.168.0.11:8888//html/test2/test$1.html

設定に引数を渡さないように記載した場合
ProxyPassMatch ^/html/test1/test([0-9]{1})\.html http://192.168.0.11:8888//html/test2/test1.html
URLのパスが全部渡される。


http://blog.riywo.com/2011/04/29/114012
mod_proxyで最後の砦を作る時

mod_rewriteの場合が記載されているけど、ProxyPassMatchとしても参考にできる
RewriteRule ^/(.*)$ http://backend/$1 [QSA,L,P]
RewriteRule (?s)^/(.*)$ http://backend/$1 [QSA,L,P]

    • mod_proxy_balancer


http://www.sssg.org/blogs/naoya/archives/976
負荷分散機能を使った場合のバランシングのさせかた(セッションなし、ラウンドロビン


http://wall-climb.com/2009/07/13/mod_proxy_balancer%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E6%A4%9C%E8%A8%8E/
mod_proxy_balancerのパラメータ検討


http://inokara.hateblo.jp/entry/2013/12/04/071312
failonstatus というのを使った場合


http://www.chikkun.com/und/document/java/balancer/apache_balancer.html

    • ProxyPass ディレクティブ


http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
本家

    • ProxyPassMatch


ProxyPassMatchのポイントは、正規表現での
「()」1つ目が、$1で参照できる(引き継がれる)
「()」2つ目が、$2で参照できる(引き継がれる)
「()」3つ目が、$3で参照できる(引き継がれる)、以降同様

^/context1([a-zA-Z0-9])/(.*) ajp://localhost:8009/context1$1/$2
のように、
最初の「(」英数字のいずれか1文字にマッチしたものは、$1で
次の「(」改行を除く任意の1文字 にマッチしたものは、$2で


http://serverfault.com/questions/534515/apache-load-balancing-proxy-bypass-not-working

1 Answer

I'd use the ProxyPassMatch directive for better control:

ProxyPassMatch ^/assets/.*$ !
ProxyPassMatch ^/(.*)$ balancer://mycluster/$1 lbmethod=byrequests
ProxyPassReverse / balancer://mycluster


BalancerMember http://localhost:9292
BalancerMember http://192.168.1.2:9292

Because the directives are evaluated in the order in which they appear, you assets directory should not be proxied, while the rest of the URLs would use the balancer.



http://ossfan.net/memo/archives/2011/06/22085506.html
Apacheのmod_proxy_ajpで特定のURLにマッチした場合のみJBossへ処理を連携する

http://ドメイン名/APP1/○○○.jsp○○○
http://ドメイン名/APP2/○○○.do○○○
http://ドメイン名/APP1/
http://ドメイン名/APP2/
でアクセスした場合に、JBossへ処理を連携する。
jpegファイルやgifファイルなどはJBossへ連携せずにApacheで処理する。

この場合、 /etc/httpd/conf.d/proxy_ajp.conf ファイルに以下の行を追加する。

ProxyPassMatch ^/APP1/(.*\.(jsp|do).*)$ ajp://IPアドレス:8009/APP1/$1
ProxyPassMatch ^/APP2/(.*\.(jsp|do).*)$ ajp://IPアドレス:8109/APP2/$1
ProxyPassMatch ^/APP1/$ ajp://172.17.83.212:8009/APP1/
ProxyPassMatch ^/APP2/$ ajp://172.17.83.212:8109/APP2/


http://keyamb.hatenablog.com/entry/20091119/1258602344
mod_proxy_ajpを使って、任意の拡張子のパスをTomcatに飛ばす
例えば、Struts2のアクション(URLが.actionで終わるもの)だけをTomcatで扱いたい場合は、以下のようにします。
conf/extra/httpd-proxy.conf

ProxyPassMatch ^/([^\.]*\.action)$ ajp://localhost:8009/struts2-project/$1