C Sharpens you up

http://qiita.com/yuba に移しつつあります

TomcatのフロントエンドとしてApacheを立てないといけない理由

Java系の開発者にとっては当たり前のことかもしれないけど.NET系にとっては初耳の話だったりするのでまとめ。

TomcatJavaで書いたウェブアプリを実行できるウェブサーバ(アプリケーションサーバ)であり、ウェブサーバである以上、単体で80,443ポートを開いてHTTPリクエストを待つことができます。

ところが普通はそうしない。Apacheだとかnginexだとかのウェブサーバを別に立ててこれが80,443を待ち、ウェブサーバがTomcatに処理依頼を送ってくるという構成を取ります。

Windows系だとIISがあたまからおしりまで全部面倒見てくれるので「なんで分けるの?」と疑問に思うわけです。その理由。

  • 静的ファイルの応答Apacheの方が早い
  • Apacheの方が再起動が早いので、SSL証明書の入れ替えで再起動に伴うダウンタイムを抑えられる*1

と、この辺はTomcat最適化がいけてねーだけじゃねーのとか感じてしまうわけですが

これは、なるほど。

  • そもそも、アプリケーションのバージョンを入れ替えたりするときフロントエンドにApacheがいないと「○○時から○○時までメンテナンスです」の表示が出せないでしょ

あれ、IISだとどうするんだっけこういうとき?

*1:IISの場合、そもそもSSL証明書の入れ替えで再起動が発生しませんが