問題:/ var/www/files /の下に、ユーザー/パスワードを必要とせずに特定のIPアドレスからアクセスしたいファイルがいくつかあります。ただし、他のIPアドレスにアクセスするにはログインが必要である必要があります。
これは私のhttpd.confにあります:
<Directory /var/www/files/>
Order deny,allow
Deny from all
Allow from 192.168
AuthUserFile /etc/Apache2/basic.pwd
AuthName "Please enter username and password"
AuthType Basic
Require user valid-user
</Directory>
しかし、私が正しく理解していれば、これは192.168。*から来るすべてのクライアントがそのディレクトリにアクセスできることを意味しますが、そのコンテンツを表示するには有効なユーザーが必要です。また、その他のIPアドレスはすべて拒否されます。正しい?
前もって感謝します。
edit:これは受け入れられる答えかもしれませんが、古いです。 Apacheの新規インストールの場合は、 Briansの回答を使用してください
これを追加: Satisfy Any
(つまり、これら2つのいずれかを渡す必要があります)。
そして構文は次のいずれかです:
Require valid-user
または:
Require user <userid>
これは、Apache 2.4以降で行われる方法です(Satisfy Any
はサポートされなくなったため)。
<Directory /var/www/files/>
AuthType Basic
AuthName "Please enter your username and password"
AuthUserFile /var/www/files/.htpasswd
<RequireAny>
Require ip 22.33.44.55
Require valid-user
</RequireAny>
</Directory>
IPアドレスとログイン/パスワードの両方が必要な場合は、<RequireAny>
を<RequireAll>
に変更してください。
これが誰かに役立つことを願っています-それを理解するのに時間がかかったので。
サーバーがプロキシの背後にある場合、Require ip
に直接依存することはできません。ただし、 Require env
:を使用できます。
<Directory /var/www/files/>
AuthType Basic
AuthName "Please enter your username and password"
AuthUserFile /var/www/files/.htpasswd
SetEnvIF X-Forwarded-For "22.33.44.55" AllowIP
<RequireAny>
Require env AllowIP
Require valid-user
</RequireAny>
</Directory>
SetEnvIF X-Forwarded-For "192.168.135.159" AllowIP
SetEnvIF X-Forwarded-For "192.168.135.135" AllowIP
AuthType Basic
AuthName "admin"
AuthUserFile "/var/www/domain.com/cms/.htpasswd"
<RequireAll>
Require env AllowIP
require valid-user
</RequireAll>
İはまた、多くの亜種をチェックしました。このコードは、Apache 100%の2.4バージョンで動作します