めもめも のーと

ハマったこととか、覚えたこととか

Basic認証をかけた上で、特定のディレクトリにはIP制限もしたくなった件

Apacheで以下のようなディレクトリ構成をしているときに、

ということをやりたくなったので、そのときのメモを残します。

/var/www/html/         # DocumentRoot
            |__ user   # 一般ユーザ向けサイトのアプリがデプロイされたディレクトリ
            |__ admin  # 管理者用サイトのアプリがデプロイされたディレクトリ

結論からいうと、こういうconfファイルの書き方でうまく動きました。 Apacheのバージョンは2.2.15です。 またVirtualHostにしてますが、特に意味は無いです。

# /etc/httpd/conf/httpd.conf

<VirtualHost 10.1.xxx.xxx:80>
    ServerName xxxxxx.jp
    DocumentRoot /var/www/html/
    CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log.%Y%m%d 86400 540" combined

    <Location /admin>
        Order deny,allow
        Deny from all
        Allow from 10.1.200.0/24
        Allow from 183.77.xxx.xxx
        Satisfy All
    </Location>
</VirtualHost>
<Directory /var/www/html/>
    AcceptPathInfo On
    AllowOverride All

    Order deny,allow
    Deny from all
    AuthUserFile /etc/httpd/conf/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Basic Auth"
    AuthType Basic
    require valid-user
    Satisfy Any
</Directory>

これでexample.com/userへのアクセスはBasic認証のみ、example.com/adminへのアクセスはBasic認証+IP制限、 という設定ができました。

<Directory /var/www/html/> でDocumentRoot全体にBasic認証を掛け、

<Location /admin> で更に/admin配下はAllow fromで許可されたIPのみ接続可能、と。

なお<Location /admin>はSatisfy AllなのでBasic認証とIP制限の両方を満たさないと接続できない、と。

恐らくこのような認識なのですが、違う場合はご意見頂けると、とてもありがたいです!!m(_ _)m

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)