как установить базовую аутентификацию apache 2.2 для обхода IP? Я подписался на эту вики http://wiki.apache.org/httpd/BypassAuthenticationOrAuthorizationRequirements , но всегда спрашивайте пароль, в том числе и на указанный IP-адрес:
<Directory /var/www/html/mydir>
AuthName "Private"
AuthType Basic
AuthUserFile "/etc/httpd/htpasswd"
Require valid-user
Order allow,deny
Allow from 111.111.111.111 222.222.222.222
Satisfy any
</Directory>
Я нахожусь под haproxy, но я настроил IP вперед, я установил LogFormat
в этом случае:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
access_log:
111.111.111.111 - - [25/Oct/2016:12:35:41 +0200] "GET /index.html HTTP/1.1" 401 487 "-" "Mozilla/5.0 (X11; Linux armv7l; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.7.0"
Конфигурация у вас в порядке и очень стандартная. Если вы используете haproxy
тогда исходный IP-адрес все запросы - это haproxy
сам, и именно этот IP-адрес allow from
проверяется директива, а не содержимое X-Forwarded-For
заголовок.
Есть несколько способов исправить этот. С Apache v2.2 вы можете использовать сторонний модуль, такой как mod_custom_headers (http://support.en.ctx.org.cn/ctx109555.citrix извините, исходная страница Citrix, похоже, была перемещена или удалена) или, возможно, mod_rpaf
(Я не использовал его раньше, поэтому не могу быть уверен, что это вызывает allow from
чтобы работать правильно).
Эти модули изменяют данные, которые Apache хранит о запросе, так что исходный IP-адрес становится значением из именованного заголовка, установленного вашим прокси-сервером (например, X-Forwarded-For
).
В качестве альтернативы вы можете перейти на Apache v2.4 и использовать mod_remoteip, который делает то же самое.
Обратите внимание, что существует также решение конфигурации Apache, с помощью которого вы устанавливаете свой собственный заголовок на haproxy
(или вы можете использовать X-Forwarded-For
один, если вы ему доверяете). Что-то вроде:
SetEnvIf X-Forwarded-For ^111.111.111.111 access_granted_by_ip
SetEnvIf X-Forwarded-For ^222.222.222.222 access_granted_by_ip
Order allow,deny
Allow from env=access_granted_by_ip
Но я признаю, что для нескольких IP-адресов это немного неудобно.