У меня есть экземпляр EC2 за балансировщиком нагрузки приложений AWS, на котором запущен apache 2.4
Проверка работоспособности настроена на выполнение GET on / health /
У меня настроены виртуальные хосты и две записи vhost - одна с именем сервера, а вторая для обработки входящих запросов непосредственно на IP-адрес. Сначала должен быть загружен aaa_first, поэтому он должен быть значением по умолчанию.
Однако, когда я перехожу непосредственно к общедоступному IP-адресу экземпляра, я получаю страницу приветствия apache по умолчанию, а проверка работоспособности получает 403:
"GET /health/ HTTP/1.1" 403 199 "-" "ELB-HealthChecker/2.0"
aaa_first. conf содержит:
<VirtualHost *:80>
ServerName aaa
<Location /var/www/html>
Require all denied
</Location>
<Location /var/www/html/health>
Require ip 10.151.0.0/20
Require all denied
</Location>
CustomLog logs/0000_access.log combined-elb-host
</VirtualHost>
default.conf содержит:
<VirtualHost *:80>
ServerName host.example.com
DocumentRoot /var/www/html
DirectoryIndex index.html
ErrorLog logs/error.log
CustomLog logs/access.log combined-elb-host
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Что мне нужно, чтобы гарантировать, что запросы к IP блокируются, кроме проверок работоспособности, исходящих от ELB?
Изменить
на
. Местоположение
совпадает с URL-адресом, а не с путями файловой системы. Из документов:
Директива ограничивает область действия вложенных директив URL-адресом... разделы работают полностью за пределами файловой системы. Это имеет несколько последствий. Самое главное, директивы не должны использоваться для управления доступом к расположениям файловой системы.