Amazon-Web-Services
apache 2.4 配置允許 ELB 健康檢查
我在 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 … 部分限制了封閉指令的範圍完全在文件系統之外執行。這有幾個後果。最重要的是,不應使用指令來控制對文件系統位置的訪問。