VirtualHost を設定している apache2 サーバで ローカルからのみ server-status を確認できるようにする方法を記載しています。
lynxインストール
テキストブラウザ「lynx」がインストールされていない場合、yumでインストールします。lynx は後ほど利用するapachectl コマンドで必要になります。
# yum install lynx # rpm -qa | grep lynx lynx-2.8.6-27.el6.x86_64 #
lynxがインストールされると、テキストブラウザを利用できるようになります。
例えば、「$ lynx http://www.checksite.jp/」とすると、該当サイトをテキストで参照できます。
httpd.conf 設定
次は、httpd.conf の設定になります。まず、mod_statusモジュールがロードされている事を確認します。もしコメントアウトされていれば、コメントアウトを外します。
LoadModule status_module modules/mod_status.so
httpd.conf を変更した場合は、apache2 を再起動します。再起動前に、httpd.conf 設定内容が正しい記載になっているかどうかをチェックします。
# /usr/local/apache2/bin/apachectl configtest Syntax OK #
apache2再起動後、この時点ではまだ httpd.conf に「server-status」の設定をしていないので、「apachectl status」コマンド結果は「Not Found」になるかと思います。
# /usr/local/apache2/bin/apachectl status Not Found The requested URL /server-status was not found on this server. #
次に、httpd.conf で、server-status の設定を行います。
今回の設定環境では既存設定で VirtualHost設定を行っている apache2 になります。server-status 確認用に新しくVirtualHost設定を行います。
以下はサンプル設定です。
<VirtualHost *:80> ServerName localhost DocumentRoot "/usr/local/apache2/localhost" <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from localhost </Location> </VirtualHost>
ポイントは、Location設定の箇所になります。SetHandler で「server-status」を指定し、「Allow from localhost」でローカルからのみ、server-statusを確認できるようにします。
httpd.conf を変更したので、再度apache2を再起動します。
その後、「apachectl status」コマンドを発行すると、server-status 情報が確認できるようになります。
# /usr/local/apache2/bin/apachectl status Apache Server Status for localhost (中略) Server uptime: 9 minutes 24 seconds Total accesses: 48 - Total Traffic: 466 kB CPU Usage: u6.54 s.61 cu0 cs0 - 1.27% CPU load .0851 requests/sec - 846 B/second - 9.7 kB/request 1 requests currently being processed, 49 idle workers PID Connections Threads Async connections total accepting busy idle writing keep-alive closing 21957 0 yes 0 25 0 0 0 21958 0 yes 1 24 0 0 0 Sum 0 1 49 0 0 0 (省略)
server-status情報はサーバ固有の情報を含みますので、この情報にアクセス可能な端末は絞った方が良いです。今回は「Allow from localhost」で絞っています。
備考
万一、localhost が /etc/hosts に定義されていない場合、「apachectl status」コマンド発行時に以下のような Forbidden 表示がされます。
# /usr/local/apache2/bin/apachectl status Forbidden You don't have permission to access /server-status on this server. #
apache2 のaccess_log には、応答コード403 で記録されていると思います。
その際は、/etc/hosts に localhostを追加するか、「Allow from 127.0.0.1」などを設定してみてください。