Apache HTTP Server のバックアップ(No.1)


Apache HTTP Server

種類

  • APR(Apache Portable Runtime)
  • MPM(Multi Processing Module)

APR

MPM

  • MPM(Multi-Processing Module)
preforkマルチプロセス、マルチスレッド
workerハイブリッド。PHPを使う場合はこちらが推奨。大規模サイト向き
eventマルチスレッド

拡張モジュール

プロキシ関連機能

mod_proxyプロキシ機能
mod_proxy_balancerロードバランサ機能
mod_proxy_http
mod_proxy_connectHTTPSのCONNECTメソッドをサポートする機能

プロキシ関連機能(Tomcat連携)

mod_jkTomcatとのJK連携
mod_proxy_ajpTomcatとのAJP13通信機能
mod_jk2TomcatとのJK2連携。廃止?

キャッシュ機能(サーバサイドキャッシング)

mod_cacheキャッシュ機能を使う場合は有効にする
mod_disk_cacheキャッシュデータをディスクに保存
mod_mem_cacheキャッシュデータをメモリに保存
mod_headersHTTPリクエストヘッダによるキャッシング制御を使う

キープアライブ機能

標準モジュール

mod_httpHTTPプロトコルの処理
mod_actionsリクエストされたファイルの形式やHTTPメソッドに連動したCGIプログラムの実行
mod_aliasURLとディレクトリの対応関係の設定
mod_asisHTTPヘッダの追加
mod_autoindexディレクトリの一覧を作成
mod_cgi(mod_cgid)CGIプログラムの実行(スレッド非対応のMPMを選択した場合はmod_cgi、スレッド対応のMPMを選択した場合はmod_cgidが組み込まれる)
mod_deflateデータ圧縮転送
mod_dirディレクトリ名で終わるURLに標準のインデックス・ファイル名を補完
mod_envCGIプログラムへの環境変数の提供
mod_imapイメージ・マップ・ファイルのサポート
mod_includeSSIの処理
mod_log_configアクセスログ取得。ログの書式設定
mod_mime拡張子を使用したコンテンツ・タイプの判定
mod_negotiationクライアントの情報に基づくコンテンツの自動選択
mod_statusApacheの稼働状態の監視
mod_setenvifクライアントの情報に基づく環境変数の設定
mod_userdir一般ユーザーのコンテンツ・ディレクトリの設定

アクセス制御(ホスト制限)

  • mod_access -アクセス元のIPアドレス、ホスト名、ドメイン名などにより、アクセスの許可/拒否を判断する

アクセス制限(ユーザ認証

  • mod_auth -ID/パスワードの入力を促す。Basic認証、Digest認証。

DSO(Dynamic Shared Object)

  • mod_so -DSOモジュールを読み込む。Apacheをコンパイルし直さずにモジュールの変更を行う。

サードパーティーのモジュール

アクセス制御(認証)

  • mon_auth_tkt
  • mod_auth_ntlm_winbind

Apacheの構造

  • 外部ライブラリ
  • モジュール
  • CORE
  • OS

Apacheのリクエストトランザクション

リクエスト受信後 
↓
URI変換
↓
ヘッダの解析
↓
アクセス制御
↓
認証
↓
アクセス許可
↓
MIMEタイプチェック
↓
微調整
↓
応答
↓
ロギング
↓
後処理

設定 (/etc/httpd/conf/httpd.conf)

  • Directory

コマンド

apachectl

  • apachectl configtest ※Apache の設定ファイルの構文チェック
  • apachectl restart ※Apache の再起動

httpd

  • httpd -version
  • httpd -V
  • httpd -M ※モジュールを表示

セッション情報の維持

スティッキーセッション方式

  • セッション変数を永続的に利用する
  • クライアント側がCookieを使わない場合、携帯端末によってはURL RewritingによりセッションIDをURLに記載する。これに対するサーバ側の対応として、URLに含まれるセッションIDを取得する。

チューニング

MaxClients値の求め方

  • MaxClients = 実メモリ / httpdのプロセスサイズ
    • プロセスのサイズを小さくするために不要なモジュールを無効にする
    • 動的コンテンツと静的コンテンツを別々のhttpdで処理する
    • mod_proxyを使ってApacheをPROXYとして動作させ、別httpdのコンテンツを同一サーバのコンテンツのように見せる

セキュリティ対策

  • HTTPリスポンスヘッダのバージョン情報を隠蔽する
  • エラーページ等のデフォルトコンテンツを置き換える
  • HTTPSで通信するデータを暗号化する。

関連用語