Apache(SSLでリバースプロキシ)+TOMCAT/AIPO


azureでAIPOをセットアップしたのですが、わけあってさくらVPSに移動することになりました。さくらVPSでは別のWEBサービスが稼働中。ということで、apacheを使ってSSLのリバースプロキシーを構築し、AIPOと接続することにしました。

これが意外と苦戦。VirtualHostをSSLベースでLet’s Encryptで作るまではうまくいくのですが(それでもsakuraのドメインではToo Manyエラーが出て取れませんでした)、AIPOとの接続がうまく行きません。

具体的には
AIPOのログイン画面は出る
CSSが読み込めてない
画像が読み込めてない

■ うまくいかない
【接続構成】
apache(SSL:443)※→TOMCAT/AIPO(SSL:8443)※
※Let’s encryptの証明書をapacheとTOMCAT/AIPO(コンバート済)で使用

で、ログインも出来ませんでした。
分からないときには基本に戻り、8443で一旦直接接続を行うべくiptablesを編集します。
結果、問題なし。ちゃんとログイン画面も出て、ログインも出来ます。

何がおこっているのかわからないので、グーグル検索してみると、どうやらSSLでのリバースプロキシーだと同様の問題が発生しているとの書き込みを複数発見。

■ 解決方法
【接続構成】
apache(SSL:443)※→TOMCAT/AIPO(ajp:8009)
※Let’s encryptの証明書をapacheで使用。

httpd.confのバーチャルホストは以下のように書き換えます。
これでうまく動いてくれました。



ServerName [FQDN] SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/[FQDN]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[FQDN]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[FQDN]/chain.pem
DocumentRoot /var/www/html

ProxyRequests Off # Proxy Mode OFF
ProxyPreserveHost On # HTTP-HOSTをHTTP-X-FORWARDED-HOSTに書き換える
ProxyPass / ajp://localhost:8009/ retry=1 keepalive=Off
ProxyPassReverse / ajp://localhost:8009/