Подтвердить что ты не робот

Базовая аутентификация 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-адрес будет отклонен. не так ли?

Спасибо заранее.

4b9b3361

Ответ 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%