Аутентификация Apache, кроме localhost
Мне нужно применить HTTP-аутентификацию только при публичном использовании веб-сайта, но я не применяю его на своем локальном хосте. Это .htaccess
, который, как я думаю, должен работать. Но он не работает - он все еще спрашивает меня о пользователе /pass.
Что я делаю не так?
SetEnvIf Remote_Addr ^127\.0\.0\.1$ develmode
<IfDefine !develmode>
AuthType Basic
AuthName "ADMIN"
AuthUserFile /path/to/.htpasswd
Require valid-user
</IfDefine>
mod_setenvif
включен, конечно.
Ответы
Ответ 1
Вам нужно посмотреть ключевые слова order
и satisfy
. Ниже приведен рабочий пример с моего сайта. Сначала мы говорим, что принимаем IP или USER. Затем мы определяем путь к файлу htpasswd и принимаем действительного пользователя из этого файла. Наконец, мы определяем, какие клиентские IP-адреса могут получить доступ к нашей сети без авторизации (мы отказываемся от всех других IP-адресов, так что они должны аутентифицироваться через htpasswd).
# permit by USER || IP
Satisfy any
# USER
AuthUserFile /var/www/munin/.htpasswd
AuthGroupFile /dev/null
AuthName "Password Protected Area"
AuthType Basic
require valid-user
# IP
order deny,allow
deny from all
allow from 11.22.33.
Ответ 2
В Apache 2.4, allow
, deny
и satisfy
больше не используются, ограничение IP-адреса также выполняется с помощью require
:
AuthUserFile /path/to/.htpasswd
AuthName "Restricted Access"
AuthType Basic
Require ip 127.0.0.1
Require valid-user
Если какая-либо из директив "Требовать" выполнена, запрос разрешен. Если вы хотите потребовать их обоих, группируйте их в блок <RequireAll>
.
Для ограничения доступа к локальному доступу вы можете использовать специальный синтаксис Require local
вместо Require ip 127.0.0.1
Подробнее: http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require