/etc/httpd/conf.d/00-xxx.confの使い方
/etc/httd/conf.d/00-xxx.confというファイルをデフォルトで利用しているだろうか?AWSをはじめとするクラウドサーバにおいて、Webサーバが複数あったり正しいDNSでないと接続不可にしたり、様々な用途で利用されることがある。今回は①本家のWebサイト、②バーチャルのWebサイト、③IPアドレスでのアクセスの内、③のアクセスを拒否する方法を記録しておく。
00-default-block.conf で IPアドレスでのアクセスを拒否
# sudo mkdir -p /var/www/html/dummy_block
# vi 00-default-block.conf
<VirtualHost *:80>
ServerName default.block
DocumentRoot "/var/www/html/dummy_block"
<Location />
Require all denied
</Location>
</VirtualHost>
# sudo apachectl configtest
# sudo systemctl restart httpd
確認はブラウザでも、自分自身でもcURLが利用できれば確認できる。
# curl -i http://153.120.7.193
# curl -i http://164.70.115.131
HTTP/1.1 302 Found
Date: Fri, 19 Sep 2025 08:03:11 GMT
Server: Apache
Location: https://164.70.115.131/
Content-Length: 207
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://164.70.115.131/">here</a>.</p>
</body></html>
Apacheでバーチャルホストを設定する際の注意点として、DNS設定との整合性、ServerNameとDocumentRootの必須指定、ログ出力の分割、アクセス権限(<Directory>ディレクティブ)の確認、Apacheの再起動漏れ、そしてセキュリティへの配慮などが挙げられます。特にDNSが利用できないと設定が無視される可能性があり、ログをバーチャルホストごとに分割する場合は注意が必要です。
設定時の主な注意点
- ServerNameの指定とDNSの利用
- 各バーチャルホストには必ず
ServerName
ディレクティブでホスト名を指定する必要があります。 - サーバー起動時や設定ファイルの読み込み時にDNSが利用できない場合、
ServerName
が解決できないとバーチャルホストの設定が無効になることがあります。
- 各バーチャルホストには必ず
- DocumentRootの設定
- 各バーチャルホストの
DocumentRoot
には、対応するWebコンテンツが存在するディレクトリを指定する必要があります。存在しないディレクトリを指定すると、アクセスが404 Not Foundになる可能性があります。
- 各バーチャルホストの
- ログファイルの分割
- バーチャルホストごとにログファイル(アクセスログ、エラーログなど)を分割したい場合は、
CustomLog
やErrorLog
ディレクティブの設定を各バーチャルホストブロック内に記述する必要があります。
- バーチャルホストごとにログファイル(アクセスログ、エラーログなど)を分割したい場合は、
- <Directoryディレクティブのアクセス権限
- 「403 Forbidden」エラーが発生する場合、
VirtualHost
ディレクティブ内に記述されたDocumentRoot
に対応する<Directory>
ディレクティブで、適切にアクセス許可が設定されているか確認しましょう。
- 「403 Forbidden」エラーが発生する場合、
- Apacheの再起動
- バーチャルホストの設定ファイルを変更した後は、設定を反映させるためにApacheを再起動またはリロードする必要があります。
- セキュリティ(ログディレクトリ)
- ログファイルの書き込み権限に注意が必要です。ログディレクトリへの書き込み権限がApacheの起動ユーザー以外に与えられていると、セキュリティ上の問題が発生する可能性があります。
- デフォルトホストの設定
localhost
など、特定のホスト名やIPアドレスにアクセスする際は、localhost
用のVirtualHost
ブロックを別途設定しておくと、XAMPPの管理画面などにアクセスできなくなる問題を回避できます。