こんにちは、やすです。
この記事では、Apacheのメイン設定ファイルである「httpd.conf」の設定項目(ディレクティブ)を紹介します。
主なディレクティブ
ServerRoot
Apache関連ファイルを保存する最上位ディレクトリを設定するディレクティブです。
デフォルト
ServerRoot "/etc/httpd"
※特に変える必要もないですね。
ServerName
Apacheサーバ自身のホスト名とポート番号を設定するディレクティブです。
デフォルト
ServerName www.example.com:80
ServerAdmin
エラーページに表示するメールアドレスを設定するディレクティブです。
※エラーがあったら、このメールアドレスに通知してくれるわけではないです。
デフォルト
ServerAdmin root@localhost
ログ関連の設定項目(ディレクティブ)
Apacheのログは「エラーログ」と「アクセスログ」の2つあります。
ErrorLog
エラーログを設定するディレクティブです。
/から始まらず相対パスになっている場合は、ServerRoot(/etc/httpd)配下になります。
デフォルト
ErrorLog "logs/error_log"
CustomLog
アクセスログ(リクエストのログ)を設定するディレクティブです。
デフォルト
CustomLog "logs/access_log" combined
※デフォルトだと「combined」形式で書き込む形になっています。
LogFormat
アクセスログに書き込む書式を設定するディレクティブです。
書式は「common」「combined」「combinedio」の3つがありますね。
デフォルト
#common
LogFormat "%h %l %u %t \"%r\" %>s %b" common
#combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
#combinedio
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
LogFormatの詳細は、こちらを参考にしてください。
LogLevel
エラーログに記録するログのレベルを設定するディレクティブです。
指定したレベルよりも高いレベルのもの全て出力されます。
デフォルト
LogLevel warn
設定できるログレベル
レベルが高い順に下記が設定できます。
レベル | 内容 |
---|---|
emerg | 緊急 – システムが利用できない |
alert | 直ちに対処が必要 |
crit | 致命的な状態 |
error | エラー |
warn | 警告 |
notice | 重要なインフォメーション |
info | 通常のインフォメーション |
debug | デバック |
HostnameLookups
アクセスログに書き込むアクセス元のIPアドレスについて、DNSに問い合わせてホスト名で書き込むかを設定するディレクティブです。
書式
HostnameLookups On
デフォルトはオフになっていて、httpd.conf内にも記載はありません。
オンにしない限り使わなくて良いディレクティブで、ネットワーク負荷が上がるのであえてオンにする必要もないです(オフが推奨)。
セキュリティ系の設定項目
SSLEngine
SSLを有効化するための設定項目です。
範囲指定のディレクティブ内ではなく、全体に効く位置に記述する必要があります。
範囲指定の設定項目
ディレクティブの効果範囲を特定のディレクトリ配下やURLに限定することもできます。
※「セクションディレクティブ」と呼びます。
<Directory>
指定したディレクトリとそのサブディレクトリにのみ設定範囲を限定するディレクティブです。
デフォルト
#「/」配下
<Directory />
AllowOverride none
Require all denied
</Directory>
#「/var/www」配下
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
#「/var/www/html」配下
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Location>
指定したURLにのみ設定範囲を限定するディレクティブです。
Directoryディレクティブとの使い分けとしては、下記。
引用:https://httpd.apache.org/docs/2.4/ja/mod/core.html#location
<Location>
ディレクティブは ファイルシステム外のコンテンツにディレクティブを適用するときに 使用してください。ファイルシステムに存在するコンテンツに対しては、<Directory>
と<Files>
を使ってください。 例外は、<Location />
で、これはサーバ全体に対して 設定を適用する簡単な方法です。
<Files>
指定したファイルにのみ設定範囲を限定するディレクティブです。
うーん、どうゆう時に使うんだろう。
機能拡張関連の設定項目(ディレクティブ)
Include
他の設定ファイルを読み込むディレクティブです。
デフォルト
Include conf.modules.d/*.conf
IncludeOptional
他の設定ファイルを読み込むディレクティブです。
デフォルト
IncludeOptional conf.d/*.conf
認証系の設定項目
AuthType
webサイトに繋げてきたクライアントにユーザー認証(ユーザー名とパスワードの入力)を求める設定をするかのディレクティブです。
書き方
AuthType Basic
※デフォルトでは特に設定されていない。None(設定なし)、Basic(Basic認証)、Digest(Digest認証)が設定できる。
Bassic認証は、平文で通信がされる認証方法で、Digest認証は通信が暗号化される認証方法です。
AuthName
ユーザー認証時に表示するメッセージ(認証名)を設定するディレクティブです。
AuthUserFile
ユーザ認証で使用するパスワードファイルを指定するディレクティブです。
書き方
AuthUserFile /etc/httpd/conf/.htpasswd
※パスは例です。
Require
ユーザー認証をパスしたユーザーについて、さらに制限を設定するディレクティブです。
たとえば、ユーザー認証は通ったんだけれども、特定のIPアドレスからの通信だった場合は、拒否するなど。
Require valid-user
※基本は、valid-userだと思う。ユーザー認証をパスしたvalidな(有効な)ユーザーはwebページへのアクセスを許可する。
その他
KeepAlive
複数のリクエストが同じ TCP の接続で送られるディレクティブ。
デフォルト
KeepAlive On
※ディレクティブ自体の記載がなく、デフォルトで「KeepAlive On」が効いている。OnかOffを指定できるが、Offにする意味もないと思う。
DocumentRoot
Webに公開するディレクトリを設定するディレクティブです。
デフォルト
DocumentRoot "/var/www/html"
リダイレクト系の設定項目
Redirect
あるURLから別のURLにリダイレクトする設定ができるディレクティブです。
※サイトが新しくなりURLが変わった時など、古いサイトの方に仕込んでおいたりできます。
書式
Redirect [ステータス] URL-path(リダイレクト元) URL(リダイレクト先)
参考サイト(Apacheのサイト)
ディレクティブ一覧
その他のディレクティブや詳しい使い方については、こちらをどうぞ。
https://httpd.apache.org/docs/2.4/ja/mod/directives.html#I
用語集
用語の意味などについては、こちらをどうぞ。
https://httpd.apache.org/docs/2.4/ja/mod/directive-dict.html
まとめ
今回は、Apacheの主なディレクティブについて紹介しました。
詳細なディレクティブの説明や使い方のディレクティブ
ではまた、バイバーイ♪