Базовая аутентификация Apache, за исключением разрешенных
Проблема: у меня есть файлы под /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-адрес будет отклонен. не так ли?
Спасибо заранее.
Ответы
Ответ 1
edit: это может быть принято, но старый. Для новых установок Apache используйте Brians ответ здесь
Добавьте это: Satisfy Any
(это означает, что любой из них должен быть передан).
И синтаксис:
Require valid-user
Или:
Require user <userid>
Ответ 2
Вот как это делается для 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>
Я надеюсь, что это поможет кому-то, поскольку мне понадобилось время, чтобы понять это.
Ответ 3
Если ваш сервер находится за прокси-сервером, вы не можете напрямую полагаться на 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>
Источник идеи
Ответ 4
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>
İ также проверил множество вариантов. этот код üorks с 2.4 версией apache 100%