Eu tenho uma instância do EC2 atrás de um AWS Application Load Balancer, executando o apache 2.4
A verificação de integridade está configurada para fazer um GET em /health/
Eu tenho hosts virtuais configurados e duas entradas vhost - uma com o nome do servidor e outra para lidar com solicitações recebidas diretamente no endereço IP. aaa_first deve ser carregado primeiro e, portanto, ser o padrão.
No entanto, quando vou diretamente para o IP público da instância, recebo a página de boas-vindas padrão do apache e a verificação de integridade recebe um 403:
"GET /health/ HTTP/1.1" 403 199 "-" "ELB-HealthChecker/2.0"
aaa_first.conf contém:
<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 contém:
<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>
O que preciso para garantir que as solicitações ao IP sejam bloqueadas, exceto as verificações de integridade provenientes do ELB?
Mude
<Location /var/www/html/health>
para<Location /health>
.Location
corresponde a URLs e não a caminhos do sistema de arquivos. Dos documentos :