このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
apache:2.4:httpd.conf [2019/10/09 22:22] y2sunlight [Main server configuretion] |
apache:2.4:httpd.conf [2020/11/20 09:33] y2sunlight [概要] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > **本編は投稿中です。しばらくお待ち下さい。** | ||
- | |||
- | ---- | ||
- | |||
====== Apache2.4 httpd.confの編集 ====== | ====== Apache2.4 httpd.confの編集 ====== | ||
+ | Version 2.4.41 | ||
+ | |||
--- // | --- // | ||
行 9: | 行 7: | ||
関連記事 | 関連記事 | ||
- | | + | * [[apache: |
- | | + | * Apache2.4 httpd.confの編集 |
- | * apache2.4 httpd.confの編集 | + | |
- | * [[apache: | + | Appendix |
+ | * [[apache: | ||
+ | * [[apache: | ||
---- | ---- | ||
+ | |||
+ | ===== 概要 ===== | ||
以下では、httpd.conf について説明しますが、その内容は本編の目的である「テスト用のローカルWebサーバの構築」です。従って、設定内容自体は公開用のWebサーバには当てはまりませんが、Apacheの設定方法に関してはある程度の参考になると思います。 | 以下では、httpd.conf について説明しますが、その内容は本編の目的である「テスト用のローカルWebサーバの構築」です。従って、設定内容自体は公開用のWebサーバには当てはまりませんが、Apacheの設定方法に関してはある程度の参考になると思います。 | ||
- | XAMPP7.2でインストールした直後の httpd.conf は全体(インクルードファイルも含めて)で 約 1, | + | XAMPP7.2でインストールした直後の httpd.conf はファイル全体で(インクルードファイルも含めて) 約 1, |
|(Section 1)Global Enviroment | Webサーバ全体の動作環境に関する設定 | | |(Section 1)Global Enviroment | Webサーバ全体の動作環境に関する設定 | | ||
行 26: | 行 28: | ||
このセクション分けは便宜的なもので、設定上の特別な意味は持ちません。上で使われている「メインサーバ」と言う用語は、バーチャルホスティングによって扱われる仮想サーバに対して本来のWebサーバの事を指す言葉として使われています。仮想サーバの設置は Supplemental configuretion で行われています。 | このセクション分けは便宜的なもので、設定上の特別な意味は持ちません。上で使われている「メインサーバ」と言う用語は、バーチャルホスティングによって扱われる仮想サーバに対して本来のWebサーバの事を指す言葉として使われています。仮想サーバの設置は Supplemental configuretion で行われています。 | ||
- | 以下では、本編の目的である「テスト用のローカルWebサーバの構築」を行うための設定内容を、httpd.conf で出現するディレクティブの順に挙げます。尚、ここでは、インストール後に変更したもの及び説明のために特に重要と思われる主要な設定内容のみを挙げています。 | + | 以下では、主要な設定内容のみを、httpd.conf で出現するディレクティブの順に挙げます。 |
+ | |||
+ | 尚、XAMPPのhttpd.conf | ||
+ | |||
+ | < | ||
+ | {XAMPP Install folder}\apache\conf\*httpd.conf | ||
+ | </ | ||
+ | |||
+ | \\ | ||
===== Global Enviroment ===== | ===== Global Enviroment ===== | ||
行 71: | 行 81: | ||
LoadModule ディレクティブはモジュールを追加してサーバの機能を拡張します。初期にロードされているモジュールの一覧は前章の「[[apache: | LoadModule ディレクティブはモジュールを追加してサーバの機能を拡張します。初期にロードされているモジュールの一覧は前章の「[[apache: | ||
+ | |||
+ | \\ | ||
===== Main server configuretion ===== | ===== Main server configuretion ===== | ||
行 95: | 行 107: | ||
== デフォルトのアクセス制御 == | == デフォルトのアクセス制御 == | ||
- | < | + | < |
- | < | + | < |
AllowOverride none | AllowOverride none | ||
Require all denied | Require all denied | ||
行 115: | 行 127: | ||
</ | </ | ||
- | DocumentRootディレクティブには、ドキュメントルートを設定します。Apacheは指定されたURLパスがAlias またはScriptAlias ディレクティブにマッチしない場合には、ここで設定した物理パスに、リクエストされたURLパスを付加して物理パスを生成します。**DocumentRoot | + | DocumentRootディレクティブには、ドキュメントルートを設定します。Apacheは指定されたURLパスがAlias またはScriptAlias ディレクティブにマッチしない場合には、ここで設定した物理パスに、リクエストされたURLパスを付加して物理パスを生成します。__DocumentRoot |
== ドキュメントルートのアクセス制御 == | == ドキュメントルートのアクセス制御 == | ||
- | FIXME | ||
- | < | + | < |
< | < | ||
Options Indexes FollowSymLinks Includes ExecCGI | Options Indexes FollowSymLinks Includes ExecCGI | ||
行 128: | 行 139: | ||
</ | </ | ||
- | == TODO == | + | ドキュメントルート下のアクセス制御を以下のように設定してます。 |
- | < | + | |
+ | | Options Indexes | ディレクトリ中のファイルリストをクライアントに返す | | ||
+ | | Options FollowSymLinks | ディレクトリ中のシンボリックリンクを有効 | | ||
+ | | Options Includes | SSI を有効にします | | ||
+ | | Options ExecCGI| CGI スクリプトの実行を許可 | | ||
+ | | AllowOverride none | アクセス制御ファイル(.htaccess)によるアクセス制御を全て許可 | | ||
+ | | Require all denied | すべてのアクセスを許可 | | ||
+ | |||
+ | == インデックスファイル | ||
+ | < | ||
< | < | ||
DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \ | DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \ | ||
行 137: | 行 157: | ||
</ | </ | ||
- | == TODO == | + | IfModule ディレクティブでは、モジュールがロードされているか否かによって含まれる設定をガードします。即ち、dir_module がロードされていない場合はDirectoryIndex ディレクティブは実行されません。 |
- | < | + | |
+ | DirectoryIndex ディレクティブでは、クライアントが「/ | ||
+ | |||
+ | == 特別なファイルの保護 | ||
+ | < | ||
<Files " | <Files " | ||
Require all denied | Require all denied | ||
行 144: | 行 168: | ||
</ | </ | ||
- | ==== ファイアフォール ==== | + | アクセス制御ファイルの名前は、既定では.htaccessです( AccessFileNameディレクティブによって変更できます )。このようにApacheでは **.ht** で始まるファイルを特別視する習慣があります。従って、このような特別なファイルを保護するために、< |
- | 最近ではパーソナルファイアフォールの入っているパソコンは珍しくありません。上の設定のようにLAN内の特定のホストからWebサーバへのアクセスを許可するにはApacheの設定だけでは上手くいきません。この場合、Webサーバで使用しているポートに対するアクセス許可をパーソナルファイアフォールで行う必要があります | + | == エラーログ == |
- | + | ||
- | ユーザディレクトリ | + | |
< | < | ||
- | UserDir "D:/Apatch Users/ | + | ErrorLog logs/error.log |
- | UserDir disabled | + | LogLevel warn |
- | UserDir enabled user1 user2 | + | |
- | + | ||
- | < | + | |
- | Options All | + | |
- | AllowOverride All | + | |
- | + | ||
- | Order Allow, | + | |
- | Allow from localhost | + | |
- | Allow from 192.168.1.0/24 | + | |
- | </ | + | |
</ | </ | ||
- | UserDirでユーザディレクトリを既定の場所(C:/ | + | ErrorLogでエラーログファイル名を、LogLevelでエラーログのレベル(重要度)を指定します。 |
+ | == アクセスログ == | ||
< | < | ||
- | UserDir | + | LogFormat |
+ | LogFormat "%h %l %u %t \" | ||
+ | LogFormat "%h %l %u %t \" | ||
+ | CustomLog "logs/access.log" | ||
</ | </ | ||
- | になっています。この場合のユーザディレクトリは" | + | CustomLog |
- | インデックスファイル | ||
< | < | ||
- | DirectoryIndex index.html index.html.var index.cgi index.php | + | # ログ形式を指定し、形式に名前(combined)を付けます |
- | </code> | + | LogFormat "%h %l %u %t \" |
- | DirectoryIndex ディレクティブでは、クライアントが「/ | + | # 指定のログ形式(combined)でログファイル(logs/ |
- | + | CustomLog | |
- | 尚、index.html.varは、Apacheがコンテントネゴシエーションを提供するための.varファイルです。コンテントネゴシエーションとは、ブラウザにより提供されたメディアタイプ、 言語、文字セットなどのネゴシエーション情報に基づいて、最適なリソースをWebサーバが選択ための機能です。 | + | |
- | + | ||
- | 特別なファイルの保護 | + | |
- | < | + | |
- | AccessFileName .htaccess | + | |
- | <Files ~ "^\.ht"> | + | |
- | Order allow, | + | |
- | Deny from all | + | |
- | </ | + | |
</ | </ | ||
- | AccessFileNameディレクティブは、アクセス制御ファイルの名前を設定します。このファイル名は既定では.htaccessです。このようにApacheでは.htで始まるファイルを特別視するのが習慣のようです。このような特別なファイルを保護するためには、<Files ~> | + | combined以外の形式(common/ |
- | この設定はインストール時のもので変更していません。 | + | |
- | エラーログ | + | \\ |
- | < | + | |
- | ErrorLog logs/ | + | |
- | LogLevel warn | + | |
- | </ | + | |
- | ErrorLogでエラーログファイル名を、LogLevelでエラーログのレベル(重要度)を指定します。Perlなどのテストではエラーログファイルを見る機会も多いと思います。この設定はインストール時のもので変更していません。 | + | ===== Supplemental configuretion ===== |
+ | このセクションでは、Include ディレクティブを使って、機能毎の設定ファイル(*.conf)を conf/extra ディレクトリー内からインクルードし、サーバーに機能を追加したり、デフォルト設定を変更したりしています。 | ||
- | アクセスログ | + | 例えば、以下はバーチャルホスティングに関するインクルードの例です。 |
- | < | + | |
- | LogFormat "%h %l %u %t \" | + | |
- | LogFormat "%h %l %u %t \" | + | |
- | LogFormat " | + | |
- | LogFormat " | + | |
- | CustomLog logs/ | ||
- | </ | ||
- | |||
- | CustomLog ディレクティブはクライアントのHTTPリクエストのログ収集を指定します。この設定はインストール時のもので変更していません。\\ | ||
- | この設定で、実際に有効なのは以下の部分です。 | ||
- | |||
- | | LogFormat "%h %l %u %t \" | ||
- | | CustomLog logs/ | ||
- | |||
- | common以外の形式(combined/ | ||
- | |||
- | CGIディレクトリ | ||
< | < | ||
- | # ScriptAlias /cgi-bin/ " | + | # Virtual hosts |
- | + | Include conf/extra/httpd-vhosts.conf | |
- | # < | + | |
- | # | + | |
- | # | + | |
- | # Order allow, | + | |
- | # Allow from all | + | |
- | # </ | + | |
</ | </ | ||
- | AddHandlerディレクティブはファイル名の拡張子を特定のハンドラにマッピングします。この設定は、拡張子(cgiとpl)をCGI スクリプトとして扱うために、ハンドラcgi-script にマッピングします。また、CGIとして実行するためにはOptions ExecCGI を使用してCGIプログラムの実行を許可しなければまりません。本編のドキュメントディレクトリの設定は Options All なので、Options ExecCGI も含んでいます。 | + | XAMPP7.2でインストールしたApacheでは、conf/extra ディレクトリー内に、バーチャルホスティング、ユーザホームディレクトリ、プロキシ、SSL及びWebDAVなど14種類の機能についての追加設定ファイルが存在しています。 |
- | + | ||
- | ==== ハンドラ ==== | + | |
- | + | ||
- | ハンドラとは、ファイルにマッピングされた「実行される動作」を表します。ハンドラはモジュールに組み込んだり、Action ディレクティブとして追加したりすることができます。以下に標準で組み込まれている主なハンドラを挙げます。 | + | |
- | + | ||
- | ^ ハンドラ名 | + | |
- | | send-as-isHTTP | ヘッダのあるファイルをそのまま送ります | .asis | | + | |
- | | cgi-script | CGI スクリプト | .cgi | | + | |
- | | imap-file | イメージマップのルールファイル | .map | | + | |
- | | type-map | コンテントネゴシエーションのタイプマップ | .var | | + | |
+ | \\ |