私はApache+Tomcatをいじくり回して、apache(クリーンで鮮明なURLロック)を介して(異なるマシンで)複数のtomcatアプリを提供できるようにしています。構成に成功し、2つのTomcatアプリを異なるマシンでほとんどmod_proxy_ajp
問題なく提供できるようになりました。mod_rewrite
私が見つけた唯一の問題は、(Struts2で開発している)アプリの1つに、タグとタグで生成されたリンクとフォームがたくさんある<s:a />
こと<s:url />
です<s:form />
。これらのタグによって生成されるURLは、通常、次のようになります。
/WebApp/path/to/some.action
ModRewriteの魔法のおかげで、これは一般的に大きな問題ではなく、そのようなURLへのハイパーリンクはすぐに書き直されてリダイレクトされ/app/path/to/some.action
ます(私はたくさんの302
応答を受け取りますが)。
実際の問題は、POST要求を実行するときに発生します。ご存知かもしれませんが、POST
mod_rewriteを使用してリクエストをリダイレクトすることはできません...したがって、最終的には... POST
mod_rewriteが正しいURLにリダイレクトするため、リクエストとしてすべてのリクエストが機能しませんGET
。
mod_proxy_html
Tomcat Webアプリケーションによって返されるURLを書き直すのにどのように役立つかについては、すでに少し読んでいますが、面倒な感じがします。
これは私の現在のapache構成です:
## HACKING BEGINS RIGHT HERE
# cookies
ProxyPassReverseCookiePath /WebApp /app
# this is for CSS, IMGs, JS and redirecting urls with /WebApp*
RewriteRule ^/WebApp(.*)$ /app$1 [R,L]
<Location /app>
ProxyPass ajp://localhost:8009/WebApp
ProxyPassReverse ajp://localhost:8009/WebApp
Order allow,deny
Allow from all
</Location>
# the other app
ProxyPassReverseCookiePath /WebApp2 /other
<Location /other>
ProxyPass ajp://200.9.4.6:8009/WebApp2
ProxyPassReverse ajp://200.9.4.6:8009/WebApp2
Order allow,deny
Allow from all
</Location>
私のPOST
要求の問題に対する解決策がなければなりません...何かアイデアはありますか?Struts2が正しいURLを出力できるように何かを構成できますか?
ご協力いただきありがとうございます。