【プログラミング】【java】httpd.confのデフォルト設定と説明 - j-komatsu/myCheatSheet GitHub Wiki

httpd.conf のデフォルト設定と説明

以下は、httpd.conf のデフォルト構成に対する日本語の説明をコメント形式で記載したチートシートです。

# サーバーの動作設定
# Listen: サーバーがリクエストを受け付けるポートを指定します(デフォルトは80)。
Listen 80

# ログファイルの場所を指定
# ErrorLog: サーバーエラーが記録されるファイルのパスを指定します。
# CustomLog: アクセスログが記録されるファイルのパスを指定します。
ErrorLog "/var/log/apache2/error_log"
CustomLog "/var/log/apache2/access_log" common

# サーバー名の設定
# ServerName: このサーバーが応答するホスト名を指定します。
# IPアドレスや完全修飾ドメイン名(FQDN)を設定するのが一般的です。
ServerName example.com

# ドキュメントルート(ウェブのコンテンツが保存されるディレクトリ)
# DocumentRoot: サーバーが提供するファイルの基準ディレクトリ。
DocumentRoot "/var/www/html"

# 各ディレクトリの権限設定
# <Directory>: 指定したディレクトリの動作をカスタマイズ。
<Directory "/var/www/html">
    # Options: ディレクトリ内のファイルやリンクの扱いを設定します。
    # - Indexes: ディレクトリインデックス(ファイル一覧)を許可。
    # - FollowSymLinks: シンボリックリンクの使用を許可。
    Options Indexes FollowSymLinks

    # AllowOverride: .htaccessファイルでの上書き設定を許可する範囲。
    # - None: .htaccessファイルを無効化。
    AllowOverride None

    # Require: アクセス許可を設定。
    # - all granted: すべてのユーザーにアクセスを許可。
    Require all granted
</Directory>

# モジュールの読み込み
# LoadModule: サーバーに必要な機能を有効化するモジュールを指定します。
# - mod_rewrite: URLのリライト(書き換え)を可能にします。
# - mod_proxy: プロキシとして動作させるために必要です。
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so

# リライトとリダイレクトの設定
# mod_rewriteを使ってURLの書き換えやリダイレクトを設定する例。

# 基本的なリライト設定例
<IfModule mod_rewrite.c>
    # リライトエンジンを有効化
    # RewriteEngine: デフォルトでは無効化されています。リライトを使用するには "On" を指定してください。
    RewriteEngine On

    # 1. 特定のパスを別のパスにリダイレクト
    # /old-page にアクセスがあれば /new-page にリダイレクトします。
    RewriteRule ^/old-page$ /new-page [R=301,L]

    # 2. HTTPSへの強制リダイレクト
    # http://example.com を https://example.com にリダイレクトします。
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    # 3. 特定の拡張子を持つファイルを他のディレクトリにリライト
    # /images/sample.jpg を /static/images/sample.jpg にリライト。
    RewriteRule ^/images/(.*) /static/images/$1 [L]

    # 4. クエリパラメータを使った条件付きリライト
    # URLに ?key=value が含まれる場合、/special-page にリダイレクト。
    RewriteCond %{QUERY_STRING} key=value
    RewriteRule ^ /special-page [L]

    # 5. デフォルトのindexページを変更
    # / にアクセスした場合、/homepage.html にリライト。
    RewriteRule ^/$ /homepage.html [L]
</IfModule>

# Redirectディレクティブを使った単純なリダイレクト例
# 特定のURLを別のURLにリダイレクトします。
Redirect 301 /old-static-page.html /new-static-page.html

# 仮想ホスト内でのリライト例
<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot "/var/www/example"

    <IfModule mod_rewrite.c>
        RewriteEngine On

        # wwwありからwwwなしへのリダイレクト
        RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
        RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
    </IfModule>
</VirtualHost>

セクションごとの説明

1. ポート設定

  • Listen:
    • サーバーがリクエストを待機するポートを指定します。
    • デフォルトは80(HTTP用)。HTTPSでは通常443を使用します。

2. ログ設定

  • ErrorLog:
    • サーバーエラーが記録されるファイルのパス。
    • トラブルシューティングに使用します。
  • CustomLog:
    • アクセスログ(リクエスト記録)が保存されるファイルのパス。
    • アクセス解析やセキュリティ監視に役立ちます。

3. サーバー名設定

  • ServerName:
    • サーバーが応答するホスト名。
    • ドメイン名またはIPアドレスを指定します。

4. ドキュメントルート設定

  • DocumentRoot:
    • サーバーが提供するウェブコンテンツのルートディレクトリ。
    • 静的ファイル(HTML、CSS、画像など)を配置します。

5. ディレクトリ設定

  • Options:
    • 許可する動作を指定。
    • 例: Indexes はディレクトリ一覧表示を有効化。
  • AllowOverride:
    • .htaccess ファイルによる設定上書きを制御。
    • デフォルトは None(無効化)。
  • Require:
    • ディレクトリへのアクセス許可設定。
    • all granted は全ユーザーにアクセスを許可。

6. モジュール設定

  • LoadModule:
    • 必要なモジュールを有効化。
    • 例: mod_rewrite はURLのリライト機能を提供。
    • mod_proxy はプロキシとして動作可能にします。

7. リライト設定

  • RewriteRule:
    • URLの書き換えルールを指定します。
    • '[L]:' ルールが一致した場合、それ以降のルールを無視します。
    • '[R=301]:' 301リダイレクト(恒久的リダイレクト)を指定します。
  • RewriteCond:
    • 条件を指定し、特定条件下でのみリライトを適用します。
    • 例: HTTPSが無効の場合や特定のクエリパラメータが存在する場合。

チートシート活用例

  • 設定確認:
    • サーバーの動作やモジュールの有効化を確認する。
  • リダイレクトの適用:
    • HTTPからHTTPSへのリダイレクトや、特定のパスの移動を簡単に設定可能。
  • トラブルシューティング:
    • ログ設定を見直し、エラーログで問題箇所を特定。
  • アクセス制御:
    • 必要に応じて AllowOverrideRequire を調整し、セキュリティを向上。

⚠️ **GitHub.com Fallback** ⚠️