/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になる可能性があります。
  • ログファイルの分割
    • バーチャルホストごとにログファイル(アクセスログ、エラーログなど)を分割したい場合は、CustomLogErrorLogディレクティブの設定を各バーチャルホストブロック内に記述する必要があります。
  • <Directoryディレクティブのアクセス権限
    • 「403 Forbidden」エラーが発生する場合、VirtualHostディレクティブ内に記述されたDocumentRootに対応する<Directory>ディレクティブで、適切にアクセス許可が設定されているか確認しましょう。
  • Apacheの再起動
    • バーチャルホストの設定ファイルを変更した後は、設定を反映させるためにApacheを再起動またはリロードする必要があります。
  • セキュリティ(ログディレクトリ)
    • ログファイルの書き込み権限に注意が必要です。ログディレクトリへの書き込み権限がApacheの起動ユーザー以外に与えられていると、セキュリティ上の問題が発生する可能性があります。
  • デフォルトホストの設定
    • localhostなど、特定のホスト名やIPアドレスにアクセスする際は、localhost用のVirtualHostブロックを別途設定しておくと、XAMPPの管理画面などにアクセスできなくなる問題を回避できます。