Apacheのwelcome.confをちゃんと読んでみたら意外と勉強になった。

CentOSなどでApacheをインストールするとデフォルトで入っている "welcome.conf" ファイル。
これは、デフォルト状態でアクセスしたときにウェルカム画面を表示するための設定ファイルです。

これがいったいどういう仕組みになっているのか、改めて調べてみました。
たった4行の設定の中にもいろいろなノウハウが詰まっていることがわかりました。
/etc/httpd/conf.d/welcome.conf
<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /error/noindex.html
</LocationMatch>

疑問その1:消しても問題ないのか?

結論からいうと、サーバ構築がちゃんと完了するまでは消さない方がよいです。

試しにwelcom.confを削除してApacheを再起動してみるとわかりますが、このようにディレクトリインデックス画面が表示されてしまいます。
これはセキュリティ上好ましくありませんね。


疑問その2:どこから呼ばれているのか?

メイン設定ファイルであるhttpd.confから、
Include conf.d/*.conf
のようにしてインクルードされています。

疑問その3:何をやっているのか?

3つの処理があります。
  • URLがあるパターンにマッチする場合に
  • Options Indexes(ディレクトリインデックス画面)を無効にし
  • 403エラーだった場合には専用のエラー画面を返す
個別に見てみましょう。
<LocationMatch "^/+$">
これは、URLが指定した正規表現にマッチした場合に、ブロック内の処理を行えという意味です。
正規表現はPCREというPerl互換正規表現というエンジンが使われています。
ここでは "^/+$ となっており、下記のようなURLパターンにマッチします。
http://example.com/
http://example.com//
http://example.com///

<LocationMatch> ディレクティブ
https://httpd.apache.org/docs/2.2/glossary.html#regex
Options -Indexes
これは、さきほどお見せしたディレクトリインデックス画面を無効にする設定です。
Indexes以外の設定(例えばFollowSymLinksなど)については、httpd.conf内で設定したものが継承されます。

https://httpd.apache.org/docs/2.2/mod/core.html#options
ErrorDocument 403 /error/noindex.html
これは、403エラー が発生したときに、Apacheのデフォルト403エラー画面ではなく指定した画面を表示するという機能です。

デフォルト403エラー画面というのはこういうやつです。



ErrorDocumentの設定があるおかげで、デフォルトエラー画面の代わりにもうちょっとリッチな画面が表示されます。



実は意外と奥が深かった

普段は目立たないwelcome.confですが、1行1行の意味を正確に読もうとすると意外と背景知識が要求されるものです。
サイズも小さいのでApacheの初心者向けの教材としてはもってこいですね。
あなたも一度立ち止まってじっくり読んでみてはいかがでしょうか。

Apacheの設定をもっと勉強したい方は下記の本をおすすめします。

カテゴリ:

人気記事