apache 2.4 配置允许 ELB 健康检查

apache 2.4 配置允许 ELB 健康检查

我在 AWS 应用程序负载均衡器后面有一个 EC2 实例,运行 apache 2.4

健康检查配置为对 /health/ 执行 GET

我已经配置了虚拟主机和两个 v​​host 条目 - 一个带有服务器名称,另一个用于直接处理传入到 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 的请求被阻止?

答案1

更改<Location /var/www/html/health><Location /health>.Location匹配 URL 而不是文件系统路径。从文档

该指令通过 URL 限制了所包含指令的范围...部分完全在文件系统之外运行。这会带来多种后果。最重要的是,不应使用指令来控制对文件系统位置的访问。

相关内容