Базовая авторизация Apache 2.2 для всех сайтов сервера, кроме одного, разрешенного по ip-адресу
Задача
Закрыть сервер разработки базовой авторизацией Apache2, при этом, у локальных компьютеров авторизацию надо отключить. Плюс ко всему, к некоторым сайтам, для определённых ip-адресов доступ так же нужно разрешить (например, серверам с 1С).
Зачем закрывать?
Как минимум для того, чтобы поисковики не лакомились локальными копиями боевых сайтов.
Почему нельзя закрыть в robots.txt?
Тогда нельзя будет добавить robots.txt в систему контроля версий.
Решение
В /etc/apache2/apache2.conf:
<Directory /home/*/www/*>
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
AuthType Basic
AuthName "Protected Area"
AuthUserFile /home/user/etc/.htpasswd
Require valid-user
Allow from 192.168.0.1/24
Satisfy Any
</Directory>
В /etc/apache2/sites-availables/ нужного хоста уже разрешаем доступ только определённому айпишнику:
<Directory /home/user/www/site.ru>
Allow from 192.168.10.10
Satisfy Any
</Directory>
И да пребудет с вами сила конфигов апача, в которых без стэковерфлоу не разберёшься.
2 комментария
Хороший пост, а скажите, так ли уж необходима эта авторизация на тестовых сайтах?
Рома, тебе доступ на все сайты должен быть без пароля вообще :-)