Apache

【Apache】主な設定項目(ディレクティブ)

記事内に商品プロモーションを含む場合があります

こんにちは、やすです。

この記事では、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ディレクティブとの使い分けとしては、下記。

<Location> ディレクティブは ファイルシステム外のコンテンツにディレクティブを適用するときに 使用してください。ファイルシステムに存在するコンテンツに対しては、 <Directory> と <Files> を使ってください。 例外は、<Location /> で、これはサーバ全体に対して 設定を適用する簡単な方法です。

引用:https://httpd.apache.org/docs/2.4/ja/mod/core.html#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の主なディレクティブについて紹介しました。

詳細なディレクティブの説明や使い方のディレクティブ

ではまた、バイバーイ♪