Amazon-Web-Services

apache 2.4 配置允許 ELB 健康檢查

  • November 30, 2020

我在 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 而不是文件系統路徑。從文件

該指令通過 URL … 部分限制了封閉指令的範圍完全在文件系統之外執行。這有幾個後果。最重要的是,不應使用指令來控制對文件系統位置的訪問。

引用自:https://serverfault.com/questions/1043651