SpringBootでAJPを通してみる

今回はタイトルの通り、SpringBootでAJPを通してみます。

SpringBoot単体で完結させる場合AJPは特に通さなくてもいいんだけど、
案件によってはApacheやNginxと併用したいっていうケースが出てきます。

そんな時にAJPを通したいんだけど、
SpringApplicationは8080ポートしか空いてなかったりします。

毎回warファイルビルドしてデプロイすれば一応AJP使えるけど…
めんどくさい!w

安心してください。使えますw

AJPを設定するために必要なファイル・クラスは以下の2つです。

  1. application.yaml
  2. Configurationクラス

application.yaml

ここに記述するのはAJPに使用するportです。
デフォルトで8009固定で指定するようにすればいいんだけど、
変えたいときもあるので可変にしましょう。

これが8009をAJPポートに指定する命令になります。

Configurationクラス

今回はAppConfigという名前でクラスを作ってます。
@Configurationアノテーションがついていれば何でもいいので
わかり易い名前にしましょう。

@Value(“${tomcat.ajp.port}”) のところでフィールドに
yamlで定義したプロパティを代入しています。

@Beanのところでは、AJPから8443にポートリダイレクトをするための設定を記述しています。
httpと8443ポートは直書きかよっていうツッコミは胸にしまっておいてくださいw
今回、ローカルで確認をしたのでhttpで良かったんですが、
おそらくSSL環境だとhttpsにする必要がありそうなので
AJPポートと同じようにymlから取り込めるようにしておくと良さそう。

ひとまず、これでSpringBoot側でAJPの受け入れは整いました!

次はapache側だけど、こっちはわりかし簡単。

まずは、httpd.conf を開いて「mod_proxy」と「mod_proxy_ajp」のmoduleを有効化します。

次に、設定ファイル(httpd.confだったりvhostsだったり、環境によって変わります)に、ProxyPass / ajp://localhost:8009/ を追加します。

この場合、http://example.com/ の場合、http://example.com:8080/ を表示するというもの。
http://example.com/hoge の場合、http://example.com:8080/huga を表示したい場合は、ProxyPass /hoge ajp://localhost:8009/fuga にしましょう。

設定が終わったらapacheを再起動して確認を!!!

今回のSpringBootプロジェクトのサンプルはgithubに公開しています。
参考にどうぞ。
https://github.com/hilo1988/SpringBootAJP

 

 



Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.