QA@IT

httpd.confの設定を変更して、特定のIPアドレスを除いてメンテナンス画面を表示させたい

5704 PV

【環境(AmazonEC2)】
・Amazon EC2 Debian 5.0 lenny AMI built by Eric Hammond
・Tomcat6.0

AmazonのクラウドサービスでJavaのシステムを運用しています。
メンテナンスのため、特定のIPアドレス(100.xxx.xxx.xxx)を除いてアクセスを拒否させたいです。
httpd.confを適切に修正したつもりなのですが、そのIPアドレスでもアクセスできず、maintenance.htmlページが表示されてしまいます。
なお、Tomcatは起動中です。

「ErrorDocument 403 /maintenance/maintenance.html」の一文を消してApacheを再起動すると、Apacheの無機質なエラー画面(403 Forbidden)が表示されます。

Allow from ~のところには、社内のプライベートアドレス、社外用のグローバルアドレス、あと、ホスト名も指定してみましたが、すべてダメでした。

なにが原因と考えられるでしょうか?
詳しい方、アドバイス頂けますと幸いです。よろしくお願いします。

</etc/apache2/httpd.conf>

Alias /maintenance/ "/etc/apache2/"
ErrorDocument 503 /maintenance/maintenance.html
ErrorDocument 404 /maintenance/maintenance.html
ErrorDocument 403 /maintenance/maintenance.html

<Location /Hoge/>
 ProxyPass ajp://localhost:8009/Hoge/
 Order allow,deny
 Allow from 100.xxx.xxx.xxx
</Location>
<Directory "/var/www/Hoge/">
 Options -Indexes FollowSymLinks
    AllowOverride None
 Order allow,deny
 Allow from 100.xxx.xxx.xxx
</Directory>

参考URL:httpdの設定(httpd.conf)
http://www.nina.jp/server/slackware/httpd/httpd.conf.html

回答

これ、Orderのドキュメントが語弊を生みやすいんですが(日本語訳の問題?)、そういう場合はおそらく

Order deny,allow
Deny from all
Allow from xxxx

と書くと良かったと思いますよ。

参考:http://www.nina.jp/server/redhat/httpd/httpd_conf.html
※うろ覚えなので間違ってたらごめんなさい。とにかくなんか順序を変えると上手く行くことがあったり、Webの情報が当てにならなかったり、という印象のある部分です。(確認してから回答すべきですが、、すみません。)

編集 履歴 (2)

解決できましたので、最終的なhttpd.confを記載します。

221~は自社のグローバルアドレスです。
この設定で、自社からは普通に実行できること。
かつ、個人所有のスマホやパソコンからだとメンテページが出ることを確認できました。
ありがとうございました。

Alias /maintenance/ "/etc/apache2/"
ErrorDocument 503 /maintenance/maintenance.html
ErrorDocument 404 /maintenance/maintenance.html
ErrorDocument 403 /maintenance/maintenance.html

<Location /Hoge/>
    ProxyPass ajp://localhost:8009/Hoge/
    Order Allow,Deny
    Allow from 221.xxx.xxx.xxx
</Location>
<Directory "/var/www/Hoge/">
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>

参考URL:http://d.hatena.ne.jp/foldrr/20090421/1240319101

編集 履歴 (0)

ありがとうございます。
いちど試してみましたが、やはり403 Forbiddenになってしまいました。
いろいろ順番を変えて試してみます。

<Location /Hoge/>
 ProxyPass ajp://localhost:8009/Hoge/
 Order deny,allow
 Allow from all
 Deny from 100.xxx.xxx.xxx
</Location>
<Directory "/var/www/Hoge/">
 Options -Indexes FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
 Deny from 100.xxx.xxx.xxx
</Directory>
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。