Apache で運用しているWebサーバの稼働状況を見てみようということで、何年かぶりに server-status を設定することにしました。

最近の httpd は設定ファイルを /etc/httpd/conf.d に書くのが流行っているようなので、このディレクトリに server-status.conf というファイルを作成し、下記のようにしました。

<Location /server-status>
SetHandler server-status
Require ip 192.168.0
</Location>

続いて apachectl configtest と apachectl restart をかませば server-status が見えるようになるはず。

早速アクセスしてみると「404 NotFound」になってしまいました。アクセス制限がうまくいっていないと403になるはずなので、アクセス制限は通過しているっぽい。

ググってみると、バーチャルドメインが設定されている場合は <Virtual> タグの中で設定する必要があるとのことで、なるほど!と思ってバーチャルドメインの中に設定したけれど、それでも 404 NotFound になってしまいました。

あれこれ彷徨ってみると、「リダイレクト設定されてない?」という情報が。

https://serverfault.com/questions/291692/why-do-i-get-a-404-not-found-when-trying-to-get-server-status

どうやら、WordPress のために設定されているリダイレクトが影響しているので、server-status についてはリダイレクトを除外する設定が必要らしい。

ということで、.htaccess を修正。

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/server-status  ←これを追加
RewriteRule . /index.php [L] 

これで、無事に server-status を見ることができるようになりました。

ただし、.htaccess の上記の部分は WordPress によって自動的に設定される箇所なので、WordPress によってさらに書き換えられてしまう可能性があります。今回は調査用ということで、短時間で解除しましたので問題にはなりませんでしたが、恒久的に設定を残すためにはなにか工夫がいるかも知れません。


0件のコメント

コメントを残す

Avatar placeholder

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください