LoginSignup
0
1

More than 5 years have passed since last update.

Apache 2.4 で OPTIONS を拒否ったら 404 が返ってくるようになった

Last updated at Posted at 2017-06-20

単純な見落としでハマってしまったので自戒のために書いておく。

事象

基本的にはタイトルのまんま。
Apache 2.4 on Linux で Web サーバのプロキシを立ていて、OPTIONS メソッドのリクエストを拒否る(403 を返す)ことになった。
もともと mod_rewrite を使っていたので /etc/httpd/conf.d/myproxy.conf に

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^OPTIONS [NC]
RewriteRule ^.*$ - [F,L]

こんなのを書いて即終了だと思ったらなんかおかしな動きをした。

curl -i -X OPTIONS http://example.com → 404 (NG)
curl -i -X OPTIONS http://example.com/ → 404 (NG)
curl -i -X OPTIONS http://example.com/path → 403 (OK)

Web ルート直下にあたるパスの場合に 403 ではなく 404 が返ってきた。
正規表現とかいろいろ変えて試してみたけどダメ。

原因

/etc/httpd/conf.d/welcome.conf に以下の記述があった。

<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /.noindex.html
</LocationMatch>

簡単に読み下すとこんな感じ。

  • Webルートへのアクセスの場合
    • ディレクトリインデックス画面は見せちゃダメ
    • 403 エラーの場合は /.noindex.html を表示する

この2個めのルールのために /.noindex.html を表示しようとしたが、これに相当するパスを削除(無効化)してたためファイルが見つからないので 404 になってしまっていた。

mod_rewrite のログを LogLevel rewrite:trace8 で出して確認してるときに Web ルートに対する OPTIONS メソッド処理の後に /.noindex.html に対する GET メソッド処理が走ってるのを見つけて気づけた。

対応

welcome.conf は初期構築時の確認のための設定ファイルだと思っているのと、そこに書かれている他のルールも今回は不要だと判断したのでファイルごと削除。

参考

Apacheのwelcome.confをちゃんと読んでみたら意外と勉強になった。 · DQNEO起業日記

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1