Apacheクックブック 第2版

―Webサーバ管理者のためのレシピ集

[cover photo]
TOPICS
クックブック , Web , PHP
発行年月日
PRINT LENGTH
308
ISBN
978-4-87311-381-4
原書
Apache Cookbook, Second Edition
FORMAT
PDF
Ebook
3,520円
Ebookを購入する

本書はUsenetニュースグループやApache FAQ、メーリングリストなどに寄せられた膨大な問題から、特に重要なトピックを選び、問題に解法を示す形式で解説するレシピ集です。モジュールの追加やログの記録、SSL対応ブラウザでの安全なトランザクション処理についてなど、運用の現場で必ず役に立つ200以上のレシピを紹介しています。改訂にあたって、Apache2.0および2.2に対応しました。実際的で幅広いトピックを分かりやすく解説する本書はサーバ管理者必携の一冊です。

目次

目次
まえがき

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つの間違い
	[]と[::]