我在 AWS Application Load Balancer 后面有一个 EC2 实例,运行 apache 2.4
健康检查配置为在 /health/ 上执行 GET
我配置了虚拟主机和两个虚拟主机条目 - 一个带有服务器名称,一个用于直接处理对 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>
除了来自 ELB 的运行状况检查之外,我需要什么来确保阻止对 IP 的请求?
更改
<Location /var/www/html/health>
为<Location /health>
。Location
匹配 URL 而不是文件系统路径。从文档: