本書はUsenetニュースグループやApache FAQ、メーリングリストなどに寄せられた膨大な問題から、特に重要なトピックを選び、問題に解法を示す形式で解説するレシピ集です。モジュールの追加やログの記録、SSL対応ブラウザでの安全なトランザクション処理についてなど、運用の現場で必ず役に立つ200以上のレシピを紹介しています。改訂にあたって、Apache2.0および2.2に対応しました。実際的で幅広いトピックを分かりやすく解説する本書はサーバ管理者必携の一冊です。
Apacheクックブック 第2版
―Webサーバ管理者のためのレシピ集
Ken Coar, Rich Bowen 著、笹井 崇司 訳
- TOPICS
- クックブック , Web , PHP
- 発行年月日
- 2008年09月
- PRINT LENGTH
- 308
- ISBN
- 978-4-87311-381-4
- 原書
- Apache Cookbook, Second Edition
- FORMAT
目次
目次 まえがき 1章 インストール レシピ1.1 Red Hat Linuxのパッケージからインストールする レシピ1.2 Debianのパッケージからインストールする レシピ1.3 WindowsにApacheをインストールする レシピ1.4 Apacheのソースコードをダウンロードする レシピ1.5 ソースコードからApacheをビルドする レシピ1.6 Apacheを起動、停止、再起動する レシピ1.7 Apacheをアンインストールする レシピ1.8 どのバージョンのApacheを使えばよいか レシピ1.9 config.niceを使ってアップグレードする レシピ1.10 システム起動時にApacheを起動する レシピ1.11 便利な設定オプション レシピ1.12 Apacheのファイルを見つける 2章 一般的なモジュールの追加 レシピ2.1 一般的なサードパーティ製モジュールをインストールする レシピ2.2 Unix系システムにmod_davをインストールする レシピ2.3 Windowsにmod_davをインストールする レシピ2.4 Unix系システムにmod_perlをインストールする レシピ2.5 Unix系システムにmod_phpをインストールする レシピ2.6 Windowsにmod_phpをインストールする レシピ2.7 mod_sslをインストールする レシピ2.8 modules.apache.orgでモジュールを探す レシピ2.9 mod_securityをインストールする レシピ2.10 なぜモジュールがうまく動かないのか 3章 ログの記録 レシピ3.1 ログエントリにもっと詳しい情報を記録する レシピ3.2 もっと詳しいエラーを取得する レシピ3.3 POSTの内容をログに記録する レシピ3.4 プロキシ経由のクライアントのIPアドレスをログに記録する レシピ3.5 クライアントのMACアドレスをログに記録する レシピ3.6 Cookieをログに記録する レシピ3.7 ローカルページからの画像のリクエストをログに記録しない レシピ3.8 特定の時間にログファイルをローテーションする レシピ3.9 毎月始めにログファイルをローテーションする レシピ3.10 IPアドレスではなくホスト名をログに記録する レシピ3.11 バーチャルホストごとに別のログで管理する レシピ3.12 プロキシ経由のリクエストをログに記録する レシピ3.13 バーチャルホストのエラーを別々のログファイルに記録する レシピ3.14 サーバのIPアドレスをログに記録する レシピ3.15 参照しているページをログに記録する レシピ3.16 ブラウザのソフトウェア名をログに記録する レシピ3.17 リクエストヘッダの任意のフィールドをログに記録する レシピ3.18 レスポンスヘッダの任意のフィールドをログに記録する レシピ3.19 MySQLデータベースに動作ログを記録する レシピ3.20 syslogにログを記録する レシピ3.21 ユーザディレクトリごとにログを記録する 4章 バーチャルホスト レシピ4.1 ネームベースのバーチャルホストを設定する レシピ4.2 デフォルトのネームベースのバーチャルホストを設定する レシピ4.3 アドレスベースのバーチャルホストを設定する レシピ4.4 デフォルトのアドレスベースのバーチャルホストを設定する レシピ4.5 アドレスベースとネームベースのバーチャルホストを混在させる レシピ4.6 mod_vhost_aliasを使ってバーチャルホストをまとめる レシピ4.7 書き換えルールを使ってバーチャルホストをまとめる レシピ4.8 バーチャルホストごとにログを記録する レシピ4.9 バーチャルホストごとにログファイルを分割する レシピ4.10 ポートベースのバーチャルホストを設定する レシピ4.11 複数のアドレス上で同じコンテンツを表示する レシピ4.12 データベースを使ってバーチャルホストを定義する 5章 エイリアスとリダイレクトとリライト レシピ5.1 URLをディレクトリに対応付ける レシピ5.2 既存のコンテンツを新しいURLでアクセスする レシピ5.3 ユーザに独自のURLを与える レシピ5.4 1つのディレクティブで複数のURLをエイリアスする レシピ5.5 複数のURLを同じCGIディレクトリに対応付ける レシピ5.6 ユーザごとにCGIディレクトリを作る レシピ5.7 別の場所にリダイレクトする レシピ5.8 複数のURLを同じ宛先にリダイレクトする レシピ5.9 URLで大文字と小文字を区別しないようにする レシピ5.10 シンボリックリンクを使わずにPHPソースをハイライトする レシピ5.11 リクエストされたURLのテキストを書き換える レシピ5.12 パス情報をCGI引数に書き換える レシピ5.13 他のサイトからのアクセスを拒否する レシピ5.14 Refererのないリクエストを説明ページにリダイレクトする レシピ5.15 クエリ文字列に基づいて書き換える レシピ5.16 サーバのすべてあるいは一部のリクエストをSSLにリダイレクトする レシピ5.17 ディレクトリをホスト名に変換する レシピ5.18 すべてのリクエストを1つのホストにリダイレクトする レシピ5.19 ドキュメント名を引数に変換する レシピ5.20 パスとクエリ文字列間で要素を書き換える レシピ5.21 ホスト名をディレクトリに書き換える レシピ5.22 URLセグメントをクエリ文字列に書き換える レシピ5.23 AliasMatch、ScriptAliasMatch、RedirectMatchを使う 6章 セキュリティ レシピ6.1 システムのアカウント情報をWeb認証に利用する レシピ6.2 1度だけ使えるパスワードを設定する レシピ6.3 パスワードを期限切れにする レシピ6.4 アップロードサイズを制限する レシピ6.5 画像がサイトの外部から使われるのを禁止する レシピ6.6 弱い認証と強い認証の両方を要求する レシピ6.7 .htpasswdファイルを管理する レシピ6.8 Digest認証のパスワードファイルを作成する レシピ6.9 サブディレクトリのセキュリティを弱める レシピ6.10 選択的に制限を解除する レシピ6.11 ファイル所有権を使ってアクセスを許可する レシピ6.12 ユーザの証明書をMySQLデータベースに格納する レシピ6.13 認証されたユーザ名にアクセスする レシピ6.14 認証に使われたパスワードを取得する レシピ6.15 パスワードのブルートフォース攻撃を防ぐ レシピ6.16 Digest認証かBasic認証を使う レシピ6.17 URLに埋め込まれた証明書にアクセスする レシピ6.18 WebDAVを保護する レシピ6.19 Webサーバユーザがファイルを書き込めないようにしてWebDAVを有効にする レシピ6.20 特定のURLに対するプロキシ経由のアクセスを制限する レシピ6.21 ラッパーを使ってファイルを保護する レシピ6.22 悪意のあるスクリプトからサーバのファイルを保護する レシピ6.23 ファイルに適切なパーミッションを設定する レシピ6.24 最小限のモジュールを動かす レシピ6.25 Webディレクトリの外部にあるファイルへのアクセスを制限する レシピ6.26 ユーザごとに使えるメソッドを制限する レシピ6.27 Rangeリクエストを制限する レシピ6.28 mod_evasiveを使ってDoS攻撃を防御する レシピ6.29 mod_securityを使ってApacheをchrootする レシピ6.30 Apache 2.2認証に移行する レシピ6.31 mod_securityを使ってウイルスをブロックする レシピ6.32 Subversionリポジトリに読み出しのみと書き込み可能アクセスを混在させる レシピ6.33 禁止されたURLを隠すためにPermanentリダイレクトを使う 7章 SSL レシピ7.1 SSLをインストールする レシピ7.2 Windows上にSSLをインストールする レシピ7.3 自己署名のSSL証明書を生成する レシピ7.4 信頼されたCAを生成する レシピ7.5 サイトの一部をSSL経由で提供する レシピ7.6 クライアント証明書を使って認証する レシピ7.7 バーチャルホストでSSLを使う レシピ7.8 ワイルドカード証明書を使う 8章 動的コンテンツ レシピ8.1 CGIディレクトリを有効にする レシピ8.2 ScriptAlias以外のディレクトリでCGIスクリプトを有効にする レシピ8.3 CGIディレクトリにデフォルトドキュメントを指定する レシピ8.4 Windowsのファイル拡張子を使ってCGIプログラムを起動する レシピ8.5 CGIスクリプトの拡張子を指定する レシピ8.6 CGIが正しくセットアップできたかテストする レシピ8.7 フォームのパラメータを読み出す レシピ8.8 特定のコンテンツタイプ用のCGIプログラムを呼び出す レシピ8.9 SSIを使用可能にする レシピ8.10 最終更新日時を表示する レシピ8.11 標準ヘッダを挿入する レシピ8.12 CGIプログラムの出力を挿入する レシピ8.13 suexecを使って別のユーザとしてCGIスクリプトを実行する レシピ8.14 CPANからmod_perlハンドラをインストールする レシピ8.15 mod_perlハンドラを書く レシピ8.16 PHPスクリプト処理を使用可能にする レシピ8.17 PHPが正しくインストールされているか確認する レシピ8.18 CGI出力をSSIで解析する レシピ8.19 ScriptAliasにあるスクリプトの出力をSSIで解析する レシピ8.20 すべてのPerlスクリプトをmod_perlで処理する レシピ8.21 Pythonスクリプト処理を使用可能にする 9章 エラー処理 レシピ9.1 Hostフィールドがないリクエストを処理する レシピ9.2 CGIスクリプトのレスポンスステータスを変更する レシピ9.3 エラーメッセージをカスタマイズする レシピ9.4 複数の言語でエラードキュメントを提供する レシピ9.5 無効なURLを他のページにリダイレクトする レシピ9.6 Internet Explorerにエラーページを表示させる レシピ9.7 エラー状態を通知する 10章 プロキシ レシピ10.1 プロキシサーバを保護する レシピ10.2 プロキシサーバがオープンなメールリレーとして使われることを防ぐ レシピ10.3 別のサーバにリクエストを転送する レシピ10.4 特定の場所に対するプロキシ経由のリクエストをブロックする レシピ10.5 mod_perlコンテンツを別のサーバから提供する レシピ10.6 キャッシュプロキシサーバを設定する レシピ10.7 プロキシ経由のコンテンツをフィルタリングする レシピ10.8 プロキシサーバに認証を要求する レシピ10.9 mod_proxy_balancerを使って負荷分散する レシピ10.10 バーチャルホストをプロキシする レシピ10.11 FTPのプロキシを拒否する 11章 パフォーマンス レシピ11.1 必要なメモリ量を測定する レシピ11.2 abを使ってApacheをベンチマークする レシピ11.3 KeepAlive設定を調整する レシピ11.4 サイトの動作のスナップショットを取得する レシピ11.5 DNS検索を回避する レシピ11.6 シンボリックリンクを最適化する レシピ11.7 .htaccessファイルのパフォーマンスへの影響を最小限にする レシピ11.8 コンテントネゴシエーションを使用不可にする レシピ11.9 プロセスの生成を最適化する レシピ11.10 スレッドの生成をチューニングする レシピ11.11 頻繁に参照されるファイルをキャッシュする レシピ11.12 複数のサーバ間で均等に負荷を分散する レシピ11.13 ディレクトリのリストをキャッシュする レシピ11.14 mod_perlを使ってPerl CGIプログラムを高速化する レシピ11.15 動的コンテンツをキャッシュする 12章 ディレクトリのリスト表示 レシピ12.1 ディレクトリやフォルダのリストを生成する レシピ12.2 標準的なヘッダとフッタを付けてディレクトリのリストを表示する レシピ12.3 スタイルシートを適用する レシピ12.4 リスト表示の一部を隠す レシピ12.5 ディレクトリのリスト表示から特定のファイルを検索する レシピ12.6 ディレクトリのリストをソートする レシピ12.7 クライアントがソート順を指定できるようにする レシピ12.8 リストの表示フォーマットを指定する レシピ12.9 クライアントが表示フォーマットを指定できるようにする レシピ12.10 ファイルに説明を付ける レシピ12.11 ドキュメントのタイトルから説明を自動生成する レシピ12.12 リスト表示のアイコンを変える レシピ12.13 ディレクトリからリスト表示する レシピ12.14 バージョン番号順に表示する レシピ12.15 ユーザがバージョン番号によるソートを指定できるようにする レシピ12.16 ユーザが表示出力を完全にコントロールできるようにする レシピ12.17 ユーザがリスト表示を変更できないようにする レシピ12.18 リストの特定の列を表示しない レシピ12.19 リスト表示が禁止されているファイルを表示する レシピ12.20 ディレクトリのリストにエイリアスを表示する 13章 その他のトピック レシピ13.1 ディレクティブを適切な場所に書く レシピ13.2 .htaccessファイルの名前を変更する レシピ13.3 「末尾のスラッシュ」問題を解決する レシピ13.4 ブラウザの能力に応じてContent-Typeヘッダを設定する レシピ13.5 Hostヘッダフィールドがないリクエストを処理する レシピ13.6 デフォルトドキュメントを変更する レシピ13.7 デフォルトの"favicon"(お気に入りアイコン)を設定する レシピ13.8 ScriptAliasされたディレクトリをリスト表示する レシピ13.9 .htaccessファイルを有効にする レシピ13.10 IBM/LotusのSSIをApacheのSSIに変換する 付録A Apacheの正規表現 A.1 どのディレクティブで正規表現が使えるのか? A.2 正規表現の基礎 A.3 実際の例 A.4 参考情報 付録B トラブルシューティング B.1 トラブルシューティングの方法 B.2 設定のデバッグ B.3 スクリプトヘッダが正しく終了していない場合のデバッグ B.4 Windowsでよくある問題 B.5 ビルド時のエラーを修正する B.6 SSIを利用する B.7 "Not Found"エラーになるリライトのデバッグ B.8 .htaccessファイルの効果がない B.9 アドレスがすでに使われている 索引 コラム目次 認証と許可 HTTPとブラウザと証明書 弱い認証と強い認証 よくある2つの間違い []と[::]