まえがき v |
1章 インストール 1 |
レシピ1.1 Red Hat Linuxのパッケージからインストールする 2 |
レシピ1.2 Debianのパッケージからインストールする 3 |
レシピ1.3 WindowsにApacheをインストールする 4 |
レシピ1.4 Apacheのソースコードをダウンロードする 9 |
レシピ1.5 ソースコードからApacheをビルドする 10 |
レシピ1.6 Apacheを起動、停止、再起動する 11 |
レシピ1.7 Apacheをアンインストールする 13 |
レシピ1.8 どのバージョンのApacheを使えばよいか 14 |
レシピ1.9 config.niceを使ってアップグレードする 15 |
レシピ1.10 システム起動時にApacheを起動する 16 |
レシピ1.11 便利な設定オプション 17 |
レシピ1.12 Apacheのファイルを見つける 19 |
2章一般的なモジュールの追加 21 |
レシピ2.1 一般的なサードパーティ製モジュールをインストールする 22 |
レシピ2.2 Unix系システムにmod_davをインストールする 22 |
レシピ2.3 Windowsにmod_davをインストールする 25 |
レシピ2.4 Unix系システムにmod_perlをインストールする 27 |
レシピ2.5 Unix系システムにmod_phpをインストールする 29 |
レシピ2.6 Windowsにmod_phpをインストールする 30 |
レシピ2.7 mod_sslをインストールする 32 |
レシピ2.8 modules.apache.orgでモジュールを探す 33 |
レシピ2.9 mod_securityをインストールする 34 |
レシピ2.10 なぜモジュールがうまく動かないのか 35 |
3章ログの記録 37 |
レシピ3.1 ログエントリにもっと詳しい情報を記録する 40 |
レシピ3.2 もっと詳しいエラーを取得する 41 |
レシピ3.3 POSTの内容をログに記録する 43 |
レシピ3.4 プロキシ経由のクライアントのIPアドレスをログに記録する 44 |
レシピ3.5 クライアントのMACアドレスをログに記録する 45 |
レシピ3.6 Cookieをログに記録する 45 |
レシピ3.7 ローカルページからの画像のリクエストをログに記録しない 47 |
レシピ3.8 特定の時間にログファイルをローテーションする 48 |
レシピ3.9 毎月始めにログファイルをローテーションする 49 |
レシピ3.10 IPアドレスではなくホスト名をログに記録する 50 |
レシピ3.11 バーチャルホストごとに別のログで管理する 51 |
レシピ3.12 プロキシ経由のリクエストをログに記録する 52 |
レシピ3.13 バーチャルホストのエラーを別々のログファイルに記録する 53 |
レシピ3.14 サーバのIPアドレスをログに記録する 54 |
レシピ3.15 参照しているページをログに記録する 55 |
レシピ3.16 ブラウザのソフトウェア名をログに記録する 56 |
レシピ3.17 リクエストヘッダの任意のフィールドをログに記録する 57 |
レシピ3.18 レスポンスヘッダの任意のフィールドをログに記録する 58 |
レシピ3.19 MySQLデータベースに動作ログを記録する 58 |
レシピ3.20 syslogにログを記録する 59 |
レシピ3.21 ユーザディレクトリごとにログを記録する 61 |
4章バーチャルホスト 63 |
レシピ4.1 ネームベースのバーチャルホストを設定する 64 |
レシピ4.2 デフォルトのネームベースのバーチャルホストを設定する 66 |
レシピ4.3 アドレスベースのバーチャルホストを設定する 67 |
レシピ4.4 デフォルトのアドレスベースのバーチャルホストを設定する 67 |
レシピ4.5 アドレスベースとネームベースのバーチャルホストを混在させる 68 |
レシピ4.6 mod_vhost_aliasを使ってバーチャルホストをまとめる 69 |
レシピ4.7 書き換えルールを使ってバーチャルホストをまとめる 71 |
レシピ4.8 バーチャルホストごとにログを記録する 72 |
レシピ4.9 バーチャルホストごとにログファイルを分割する 73 |
レシピ4.10 ポートベースのバーチャルホストを設定する 73 |
レシピ4.11 複数のアドレス上で同じコンテンツを表示する 74 |
レシピ4.12 データベースを使ってバーチャルホストを定義する 75 |
5章エイリアスとリダイレクトとリライト 77 |
レシピ5.1 URLをディレクトリに対応付ける 77 |
レシピ5.2 既存のコンテンツを新しいURLでアクセスする 79 |
レシピ5.3 ユーザに独自のURLを与える 79 |
レシピ5.4 1つのディレクティブで複数のURLをエイリアスする 83 |
レシピ5.5 複数のURLを同じCGIディレクトリに対応付ける 84 |
レシピ5.6 ユーザごとにCGIディレクトリを作る 84 |
レシピ5.7 別の場所にリダイレクトする 85 |
レシピ5.8 複数のURLを同じ宛先にリダイレクトする 87 |
レシピ5.9 URLで大文字と小文字を区別しないようにする 88 |
レシピ5.10 シンボリックリンクを使わずにPHPソースをハイライトする 88 |
レシピ5.11 リクエストされたURLのテキストを書き換える 90 |
レシピ5.12 パス情報をCGI引数に書き換える 91 |
レシピ5.13 他のサイトからのアクセスを拒否する 92 |
レシピ5.14 Refererのないリクエストを説明ページにリダイレクトする 93 |
レシピ5.15 クエリ文字列に基づいて書き換える 94 |
レシピ5.16 サーバのすべてあるいは一部のリクエストをSSLにリダイレクトする 94 |
レシピ5.17 ディレクトリをホスト名に変換する 95 |
レシピ5.18 すべてのリクエストを1つのホストにリダイレクトする 96 |
レシピ5.19 ドキュメント名を引数に変換する 97 |
レシピ5.20 パスとクエリ文字列間で要素を書き換える 97 |
レシピ5.21 ホスト名をディレクトリに書き換える 98 |
レシピ5.22 URLセグメントをクエリ文字列に書き換える 99 |
レシピ5.23 AliasMatch、ScriptAliasMatch、RedirectMatchを使う 99 |
6章セキュリティ 101 |
レシピ6.1 システムのアカウント情報をWeb認証に利用する 103 |
レシピ6.2 1度だけ使えるパスワードを設定する 104 |
レシピ6.3 パスワードを期限切れにする 106 |
レシピ6.4 アップロードサイズを制限する 108 |
レシピ6.5 画像がサイトの外部から使われるのを禁止する 110 |
レシピ6.6 弱い認証と強い認証の両方を要求する 111 |
レシピ6.7 .htpasswdファイルを管理する 113 |
レシピ6.8 Digest認証のパスワードファイルを作成する 115 |
レシピ6.9 サブディレクトリのセキュリティを弱める 116 |
レシピ6.10 選択的に制限を解除する 117 |
レシピ6.11 ファイル所有権を使ってアクセスを許可する 118 |
レシピ6.12 ユーザの証明書をMySQLデータベースに格納する 119 |
レシピ6.13 認証されたユーザ名にアクセスする 121 |
レシピ6.14 認証に使われたパスワードを取得する 121 |
レシピ6.15 パスワードのブルートフォース攻撃を防ぐ 122 |
レシピ6.16 Digest認証かBasic認証を使う 123 |
レシピ6.17 URLに埋め込まれた証明書にアクセスする 124 |
レシピ6.18 WebDAVを保護する 125 |
レシピ6.19 Webサーバユーザがファイルを書き込めないようにしてWebDAVを有効にする 126 |
レシピ6.20 特定のURLに対するプロキシ経由のアクセスを制限する 127 |
レシピ6.21 ラッパーを使ってファイルを保護する 129 |
レシピ6.22 悪意のあるスクリプトからサーバのファイルを保護する 130 |
レシピ6.23 ファイルに適切なパーミッションを設定する 131 |
レシピ6.24 最小限のモジュールを動かす 134 |
レシピ6.25 Webディレクトリの外部にあるファイルへのアクセスを制限する 136 |
レシピ6.26 ユーザごとに使えるメソッドを制限する 137 |
レシピ6.27 Rangeリクエストを制限する 138 |
レシピ6.28 mod_evasiveを使ってDoS攻撃を防御する 140 |
レシピ6.29 mod_securityを使ってApacheをchrootする 141 |
レシピ6.30 Apache 2.2認証に移行する 142 |
レシピ6.31 mod_securityを使ってウイルスをブロックする 143 |
レシピ6.32 Subversionリポジトリに読み出しのみと書き込み可能アクセスを混在させる 143 |
レシピ6.33 禁止されたURLを隠すためにPermanentリダイレクトを使う 145 |
7章SSL 147 |
レシピ7.1 SSLをインストールする 147 |
レシピ7.2 Windows上にSSLをインストールする 149 |
レシピ7.3 自己署名のSSL証明書を生成する 149 |
レシピ7.4 信頼されたCAを生成する 153 |
レシピ7.5 サイトの一部をSSL経由で提供する 154 |
レシピ7.6 クライアント証明書を使って認証する 156 |
レシピ7.7 バーチャルホストでSSLを使う 157 |
レシピ7.8 ワイルドカード証明書を使う 158 |
8章動的コンテンツ 161 |
レシピ8.1 CGIディレクトリを有効にする 161 |
レシピ8.2 ScriptAlias以外のディレクトリでCGIスクリプトを有効にする 162 |
レシピ8.3 CGIディレクトリにデフォルトドキュメントを指定する 163 |
レシピ8.4 Windowsのファイル拡張子を使ってCGIプログラムを起動する 165 |
レシピ8.5 CGIスクリプトの拡張子を指定する 166 |
レシピ8.6 CGIが正しくセットアップできたかテストする 167 |
レシピ8.7 フォームのパラメータを読み出す 170 |
レシピ8.8 特定のコンテンツタイプ用のCGIプログラムを呼び出す 173 |
レシピ8.9 SSIを使用可能にする 175 |
レシピ8.10 最終更新日時を表示する 176 |
レシピ8.11 標準ヘッダを挿入する 177 |
レシピ8.12 CGIプログラムの出力を挿入する 178 |
レシピ8.13 suexecを使って別のユーザとしてCGIスクリプトを実行する 179 |
レシピ8.14 CPANからmod_perlハンドラをインストールする 181 |
レシピ8.15 mod_perlハンドラを書く 182 |
レシピ8.16 PHPスクリプト処理を使用可能にする 184 |
レシピ8.17 PHPが正しくインストールされているか確認する 184 |
レシピ8.18 CGI出力をSSIで解析する 185 |
レシピ8.19 ScriptAliasにあるスクリプトの出力をSSIで解析する 186 |
レシピ8.20 すべてのPerlスクリプトをmod_perlで処理する 186 |
レシピ8.21 Pythonスクリプト処理を使用可能にする 187 |
9章エラー処理 189 |
レシピ9.1 Hostフィールドがないリクエストを処理する 189 |
レシピ9.2 CGIスクリプトのレスポンスステータスを変更する 190 |
レシピ9.3 エラーメッセージをカスタマイズする 191 |
レシピ9.4 複数の言語でエラードキュメントを提供する 192 |
レシピ9.5 無効なURLを他のページにリダイレクトする 193 |
レシピ9.6 Internet Explorerにエラーページを表示させる 194 |
レシピ9.7 エラー状態を通知する 195 |
10章プロキシ 197 |
レシピ10.1 プロキシサーバを保護する 197 |
レシピ10.2 プロキシサーバがオープンなメールリレーとして使われることを防ぐ 199 |
レシピ10.3 別のサーバにリクエストを転送する 199 |
レシピ10.4 特定の場所に対するプロキシ経由のリクエストをブロックする 201 |
レシピ10.5 mod_perlコンテンツを別のサーバから提供する 201 |
レシピ10.6 キャッシュプロキシサーバを設定する 202 |
レシピ10.7 プロキシ経由のコンテンツをフィルタリングする 203 |
レシピ10.8 プロキシサーバに認証を要求する 204 |
レシピ10.9 mod_proxy_balancerを使って負荷分散する 204 |
レシピ10.10 バーチャルホストをプロキシする 206 |
レシピ10.11 FTPのプロキシを拒否する 206 |
11章パフォーマンス 209 |
レシピ11.1 必要なメモリ量を測定する 209 |
レシピ11.2 abを使ってApacheをベンチマークする 210 |
レシピ11.3 KeepAlive設定を調整する 212 |
レシピ11.4 サイトの動作のスナップショットを取得する 213 |
レシピ11.5 DNS検索を回避する 214 |
レシピ11.6 シンボリックリンクを最適化する 215 |
レシピ11.7 .htaccessファイルのパフォーマンスへの影響を最小限にする 216 |
レシピ11.8 コンテントネゴシエーションを使用不可にする 218 |
レシピ11.9 プロセスの生成を最適化する 220 |
レシピ11.10 スレッドの生成をチューニングする 221 |
レシピ11.11 頻繁に参照されるファイルをキャッシュする 223 |
レシピ11.12 複数のサーバ間で均等に負荷を分散する 224 |
レシピ11.13 ディレクトリのリストをキャッシュする 226 |
レシピ11.14 mod_perlを使ってPerl CGIプログラムを高速化する 226 |
レシピ11.15 動的コンテンツをキャッシュする 228 |
12章ディレクトリのリスト表示 231 |
レシピ12.1 ディレクトリやフォルダのリストを生成する 231 |
レシピ12.2 標準的なヘッダとフッタを付けてディレクトリのリストを表示する 233 |
レシピ12.3 スタイルシートを適用する 234 |
レシピ12.4 リスト表示の一部を隠す 234 |
レシピ12.5 ディレクトリのリスト表示から特定のファイルを検索する 235 |
レシピ12.6 ディレクトリのリストをソートする 236 |
レシピ12.7 クライアントがソート順を指定できるようにする 236 |
レシピ12.8 リストの表示フォーマットを指定する 238 |
レシピ12.9 クライアントが表示フォーマットを指定できるようにする 238 |
レシピ12.10 ファイルに説明を付ける 239 |
レシピ12.11 ドキュメントのタイトルから説明を自動生成する 240 |
レシピ12.12 リスト表示のアイコンを変える 240 |
レシピ12.13 ディレクトリからリスト表示する 241 |
レシピ12.14 バージョン番号順に表示する 242 |
レシピ12.15 ユーザがバージョン番号によるソートを指定できるようにする 242 |
レシピ12.16 ユーザが表示出力を完全にコントロールできるようにする 243 |
レシピ12.17 ユーザがリスト表示を変更できないようにする 244 |
レシピ12.18 リストの特定の列を表示しない 245 |
レシピ12.19 リスト表示が禁止されているファイルを表示する 245 |
レシピ12.20 ディレクトリのリストにエイリアスを表示する 246 |
13章その他のトピック 249 |
レシピ13.1 ディレクティブを適切な場所に書く 249 |
レシピ13.2 .htaccessファイルの名前を変更する 251 |
レシピ13.3 「末尾のスラッシュ」問題を解決する 252 |
レシピ13.4 ブラウザの能力に応じてContent-Typeヘッダを設定する 253 |
レシピ13.5 Hostヘッダフィールドがないリクエストを処理する 254 |
レシピ13.6 デフォルトドキュメントを変更する 254 |
レシピ13.7 デフォルトの"favicon"(お気に入りアイコン)を設定する 255 |
レシピ13.8 ScriptAliasされたディレクトリをリスト表示する 256 |
レシピ13.9 .htaccessファイルを有効にする 257 |
レシピ13.10 IBM/LotusのSSIをApacheのSSIに変換する 258 |
付録AApacheの正規表現 259 |
A.1 どのディレクティブで正規表現が使えるのか? 260 |
A.2 正規表現の基礎 260 |
A.3 実際の例 263 |
A.4 参考情報 264 |
付録Bトラブルシューティング 265 |
B.1 トラブルシューティングの方法 265 |
B.2 設定のデバッグ 266 |
B.3 スクリプトヘッダが正しく終了していない場合のデバッグ 266 |
B.4 Windowsでよくある問題 267 |
B.5 ビルド時のエラーを修正する 269 |
B.6 SSIを利用する 270 |
B.7 "Not Found"エラーになるリライトのデバッグ 271 |
B.8 .htaccessファイルの効果がない 271 |
B.9 アドレスがすでに使われている 272 |
索引 274 |
コラム目次 |
認証と許可 102 |
HTTPとブラウザと証明書 105 |
弱い認証と強い認証 113 |
よくある2つの間違い 261 |
[]と[::] 262 |
まえがき v |
1章 インストール 1 |
レシピ1.1 Red Hat Linuxのパッケージからインストールする 2 |
レシピ1.2 Debianのパッケージからインストールする 3 |
レシピ1.3 WindowsにApacheをインストールする 4 |
レシピ1.4 Apacheのソースコードをダウンロードする 9 |