質問: ### 前置き apacheとtomcatをAJP連携させた際に、セッションIDが維持されない現象に遭遇しております。 ### やりたいこと apacheに対する`http://www.hoge.com/`以下へのリクエストをAJP連携したtomcatに飛ばす。 その際、セッションが正しく維持されること。 ### 前提条件 AJP連携の設定は、httpd.confとは別に下記のファイルにLocationタグを掘って記載しています。 * ファイル名:`/etc/httpd/conf.d/mod_ajp_proxy.conf` * 設定内容: ``` ProxyPass ajp://localhost:8009/TestApp/ ``` ※ 補足1:Tomcatには`TestApp`という名称のアプリ(war)を配備しています。 ※ 補足2:上記設定で`http://www.hoge.com/` へアクセスした際の挙動は、`TestApp`のTopページが表示され、AJP連携ができていることを確認しております。しかし、Google開発者ツールでCookieを確認すると、`JSESSIONID`が入っておらず、セッション維持ができておりません。 ### 試したこと1 このサイト を参考に、**アクセス用のURLをWebアプリケーション名と完全に一致させる** というやり方を試してみました。 * `mod_ajp_proxy.conf` の設定 ``` ProxyPass ajp://localhost:8009/TestApp/ ``` これで「http://www.hoge.com/**TestApp**」のようにアクセスすると、 `JSESSIONID`がCookieに設定され、他の画面に遷移してもセッションが維持されることを確認しました。 しかし、「http://www.hoge.com/」でアクセスできるようにしたいため、以下へ続きます。 ### 試したこと2 このサイト と現象が同じため、参考にさせていただいております。 * 以下の設定は、サイトからの引用です ``` ProxyPass ajp://localhost:8009/ keepalive=on ProxyPassReverse ajp://localhost:8009 ProxyPassReverseCookiePath / /tomcat/ ``` この方は、apacheに対する「http://www.hoge.com/**tomcat/**」以下へのリクエストをAJP連携したtomcatに飛ばす、という要件で設定をされております。 私の場合は、「http://www.hoge.com**/**」以下へのアクセスで、AJP連携したtomcatに飛ばす、という要件です。 私の要件を踏まえて、読み替えながらいろいろ設定したのですが、頭がこんがらがってきて質問をさせていただいた次第です...。 すみませんが、何卒よろしくお願い申し上げます<(_ _)>
回答: * ~~Spring BootアプリケーションをOpenShiftにデプロイする~~ Tomcatルートにアプリケーションをデプロイする * Tomcat9 バーチャルホストを設定する * ajp://localhost:8009 ではなく ajp://subdomain.example.com:8009 でアクセスする 辺りかな