トップ OSS紹介 Apache HTTP Server

Apache HTTP Server

サポート対象

NRIのOpenStandiaが提供するApache HTTP Server最新情報

Apache HTTP Server情報

Apache HTTP Server とは

Apache HTTP Server(アパッチ エイチティーティーピーサーバ)は、世界でもっとも広く使われているサーバソフトウェアのひとつで、大規模な商用サイトから、個人レベルの自宅サーバまで状況に応じた汎用性を発揮できるところが最大の魅力です。

普及率の高さは、多様なモジュール開発による柔軟な機能拡張や、技術者の確保、引き継ぎの容易さを実現しており、多言語からの移行もスムーズです。サービスの発展過程に合わせた、きめ細やかな運用が可能となりますので、あらかじめ規模の限定された用途だけではなく、将来にわたって規模やサービス内容を拡充させたい場合にも不安のない選択肢です。

サーバソフトウェアを導入する際は、まずはApache HTTP Serverからご検討ください。

主な特徴

Apache HTTP Serverは、次のような特徴があります

  • 世界シェア20%を超える普及率
  • 圧倒的事例数による信頼性
  • 世界中で開発が続く多彩なモジュール
  • ほとんどすべてのプラットフォームに対応
  • シンプルで動作の軽い設計

導入事例

stateタイムアウト時のエラー画面が正しく表示されない問題を解消(サポート対応事例)

mod_auth_openidcでは、認証リクエストでmod_auth_openidcが発行するstateにタイムアウト(デフォルトは5分)を設定することができます。OPでの認証の際にログイン画面表示後にすぐにログインせずに放置したケースなどで、認証レスポンスで送信されきたstateが上記タイムアウト時間を超過することがあります。その場合、mod_auth_openidcはstateのタイムアウトを検知して、タイムアウトエラー画面を表示します。

ある顧客環境で、このstateタイムアウトエラーが発生した際に、エラー画面が適切に表示されないという問い合わせがあり、調査を行いました。

・再現確認および調査

顧客環境では、ELB + Apache(2.4.43) + mod_auth_openidc(2.4.0.3)が利用されていました。Apacheとmod_auth_openidcだけを使ったシンプルな構成では問題が再現しなかったため、ブラウザやELBの経由の有無を変えながら調査を行っていたところ、ELB経由かつIEもしくはChromeを使っている場合に問題が再現することが特定できました。

ELB経由\ブラウザ

IE

Chrome

FireFox

ELB経由なし

再現せず

再現せず

再現せず

ELB経由あり

★再現★

★再現★

再現せず

なぜこのような動作の違いが生じているのか確認するため、ネットワークキャプチャを取得してレスポンスの中身を確認したところ、下記のようにエラー画面のレスポンスが想定外な状態になっていることが分かりました。

「本来のエラー画面レスポンス」の下に、本来は出力されるべきでない「重複したエラー画面レスポンス + Apacheのエラー画面レスポンス」が出力されてしまっており、Content-Lengthに一致したレスポンスサイズになっていないことが分かりました(Content-Lengthは、「本来のエラー画面レスポンス」のサイズだけになっています)。

リバースプロキシとしてApacheだけを使っている場合は、実際のレスポンスボディサイズとContent-Lengthが一致していない場合でも、何事もなかったように処理されてしまうため、顧客環境の問題は再現しませんでした。一方で、 ELBを経由している場合には、実際のレスポンスサイズとContent-Lengthが一致していないと、IEやChromeを使っている場合には、ブラウザが正しくレスポンスを受け取ることができなくなります(ブラウザ自身のエラー画面や真っ白い画面になる)。

・まとめ

上記のような調査結果から、以下の4つの条件を満たした場合に、問題の事象が再現することが判明しました。

  • mod_auth_openidcが2.4.1以下である
  • OIDCStateTimeoutを超過してタイムアウトエラーが発生する
  • ロードバランサにELBを利用している
  • ブラウザとして、IEもしくはChromeを使用している

直接の原因は、stateタイムアウト発生時のエラー画面レスポンスが不正な状態で出力されていることです。

当該問題に関しては、mod_auth_openidcのコミュニティに報告を行い、バグとして修正されました。 実際のやりとりは以下の通りです。

mod_auth_openidc 2.4.2以降でこの問題は修正されています。

その他導入事例

Apache HTTP Serverは、ほとんどすべてのプラットフォームに対応し、動作が非常に安定しているため、中小から大規模まで、さまざまな業種・システムでのHTTPサーバとして幅広く利用されています。

OpenStandiaでの、Apache HTTP Server導入事例も数多くあります。代表的な事例は下記のものです。

  • 「大量サーバが必要なネットサービスインフラをオープンソースで」 サービス業 N社
  • 「基幹システム再構築をオープンソースで」 サービス業 T社
  • 「自治体システムをオープンソースで」 J市
  • 「ECサイトをMySQLで。オープンソースでクラスター構成」 サービス業 D社
  • 「オープンソースだからできるシステムの横展開」 サービス業 P社
  • 「オープンソースで共通プラットフォームを実現」 製造業 R社
  • 「開発環境のセキュリティを向上」 製造業 M社
  • 「MySQLのディザスタリカバリー構成」 サービス業 S社
  • 「フル・オープンソースのSaaSポータル」 SIer I社
  • 「銀行向けの確実な情報伝達」 金融機関 J社
  • 「金融機関の基幹DBにMySQLを活用」 金融機関K社
  • 「お客様を待たせない、高性能コールセンター」 金融機関 B社
  • 「高いピーク性能が求められるオンライントレードシステムをオープンソースで実現」 証券会社 G社
  • 秒間24,000にも及ぶ大量トランザクション NRI 証券ASPサービス
  • 「店舗とインターネット、2つの経路からの予約受付」 サービス業 F社
  • 「1日も早くサービスをスタートしたい!」 サービス業 E社
  • 「"止まらない"ECサイトを実現」 セブンドリーム・ドットコム様

類似プロダクト

Webサーバとして類似機能をもつ OSS として、以下のものがあります。

  • H2O
  • lighthttpd
  • Nginx
  • OpenLightSpeed

Netcraft社の調査によれば、Apache HTTP Serverは、かつては60%程度の大きなシェアを持っていましたが、その後登場した Nginx やその他のプロダクトにより徐々にシェアを奪われている状況になっています。
現状のWebサーバのシェアは、Apache、Nginxだけで5割近くを占めている状況ですが、その他の選択肢についても増加傾向にあります。ですが、Apache HTTP Server や Nginx に肩を並べるようなOSSはまだ登場していない状況です。

参考:

こんなお客さまにApache HTTP Serverの導入をオススメ

次のようなお客様に、Apache HTTP Serverの導入をオススメします。

  • 信頼性の高いサーバソフトウェアを導入したい
  • サービスの規模を発展的に拡張させていきたい
  • 小規模なサーバから試験的に運用してみたい
  • 技術者を継続的に補充・補強していきたい
  • 独自サービス開発のためには、機能拡張の選択肢は多い方が良い

Apache HTTP Serverのライセンス

Apache HTTP Serverソフトウェアは、Apache(アパッチ)独自のライセンス規約を有します。
Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Nginx
    サポート対象

    Nginx

    エンジンエックス。Apache HTTP Serverに次ぐ利用率で人気急上昇中の高速・高性能Webサーバです。

  • Jetty

    Jetty

    ジェティ。100%Javaで開発されたJava Servletコンテナ/Webサーバです。

  • Apache Tomcat
    サポート対象

    Apache Tomcat

    アパッチトムキャット。JavaサーブレットやJSPを実行するためのソフトウェア

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。