Apacheで特定ホスト以外からのアクセスをメンテナンス画面にする方法

by @chris


Webサイトをメンテナンスする際に、一般ユーザからは「メンテナンス中」画面を、管理者・開発者からは通常のサイト画面を出すようにするApacheの設定は以下な感じ。
"mod_rewrite"(モジュール)がLoadされていることが前提です。

ErrorDocument 503 /503.html

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/503\.html
RewriteCond %{REMOTE_ADDR} !^192\.168\.0
RewriteRule ^(.*)$ - [R=503,L]


上記例では、"192.168.0."で始まるプライベートIPアドレス全てをアクセス許可にしていますが、必要に応じてアクセス元の対象を絞るようにしてください。
メンテナンス画面は、503のHTTPコードを返すことで、サーチエンジンにインデクシングされることもないはず。イントラ内だったら、レスポンスコードはそんなに気にしなくても良いかも。
あと、メンテナンス画面となる"503.html"は事前に作っておきましょう。(Apacheのデフォルトでも良ければ作らなくても良いですが...)

関連リンク

別途、503.htmlは用意する。
${RAILS_ROOT}/tmp/stop.txtが存在する場合のみ、503のHTTPレスポンスコードと、メンテナンス画面を返す。

RailsAllowModRewrite on

ErrorDocument 503 /503.html

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/../tmp/stop.txt -f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ - [R=503,L]


↑のアイデアは上記エントリが参考になるかと思います。

参考


Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集

Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集