🙆
【Apache】Directoryディレクティブのパスは存在していなくても構文チェックでエラーにならない
起きたこと
web アプリケーションの特定のディレクトリに対して IP 制限をかけるために、Apache の設定ファイルを書いた。
httpd -t
コマンドで構文チェック、Syntax OK
と出たので Apache の設定ファイルをリロードした。
設定が当たっていることを確認するために、アクセスしてみると、正常にアクセスできてしまっていた。
設定した内容
記述内容はイメージです。
site.conf
<VirtualHost xxx.xxx.xxx.xxx:443>
ServerName hoge.example.com
DocumentRoot /var/www/html/hoge.example.com/public
<Directory /var/www/html/hoeg.example.com/public>
Require ip yyy.yyy.yyy.yyy
</Directory>
# 以下省略
</VirtualHost>
IP制限が動作していなかった原因
Directory
ディレクティブのパスが存在しないパスだった。
- <Directory /var/www/html/hoeg.example.com/public>
+ <Directory /var/www/html/hoge.example.com/public>
設定を正しいパスに直し、設定の再読み込みを行ったことで、IP 制限されるようになった。
httpd -t
では Directory ディレクディブのパスは存在していなくてもエラーにならないようでした。
DocumentRoot が間違っているとエラーになるので、Directory ディレクティブのパスについても同じ挙動だと思い込んでいたため、原因を見つけるまでに時間がかかってしまった。
Discussion