Базовая аутентификация Apache, за исключением разрешенных - PullRequest
20 голосов
/ 05 ноября 2010

Проблема: у меня есть несколько файлов в / 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-адрес будет отказано. право

Заранее спасибо.

Ответы [ 4 ]

40 голосов
/ 30 ноября 2014

Вот как это делается для 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> to <RequireAll>

Надеюсь, это кому-нибудь поможет - мне понадобилось время, чтобы понять это.

13 голосов
/ 05 ноября 2010

edit : это может быть принятый ответ, но старый.Для новых установок Apache используйте Ответ Brians здесь

Добавьте это: Satisfy Any (что означает, что любой из этих 2 должен быть пропущен).

И синтаксис::

Require valid-user

Или:

Require user <userid>
3 голосов
/ 05 октября 2015

Если ваш сервер находится за прокси-сервером, вы не можете полагаться на 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>

Источник идеи

1 голос
/ 08 ноября 2017
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%

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...