Назад | Перейти на главную страницу

Конфигурация Apache для пульса и прокси-сервера через ELB

Я запускаю Apache 2.2.15 на Linux в AWS с использованием ELB.

Моя цель - предоставить две функции:

1) Страница Heartbeat для моего ELB, чтобы проверить, работает ли Apache (/healthcheck.html)

2) Все остальные запросы отправляйте в ELB следующего уровня через ProxyPass.

Я поместил простой html-файл в / var / www / html с именем healthcheck.html.

Вот мой конфиг:

<VirtualHost *:80>
   <Directory "/var/www/html">
    allow from all
   </Directory>
    ProxyRequests Off
    ProxyPass / http://bigassawsdomainname.com:80/  
    ProxyPassReverse / http://bigassawsdomainname.com:80/ 
    ProxyPreserveHost On
</VirtualHost>

Функциональность прокси-сервера, похоже, работает нормально. Однако при нажатии localhost / healthcheck.html возвращается 404.

Я совершенно уверен, что моя конфигурация настроена неправильно. Как мне это настроить? Я безуспешно экспериментировал с местоположением и каталогом.

Обновить:

Решение:

NameVirtualHost *:80

<VirtualHost *:80>
    ProxyRequests Off
    <LocationMatch "^(?!/healthcheck.html)">
     ProxyPassMatch http://bigassawsdomainname.com:80/  
    </LocationMatch>
    ProxyPassReverse / http://bigassawsdomainname.com:80/ 
    ProxyPreserveHost On
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html
    <LocationMatch /healthcheck.html>
    RewriteEngine On
    RewriteRule ^/$ /healthcheck.html [L]
   </LocationMatch>
</VirtualHost>

Вы можете использовать отрицательный просмотр вперед в блоке сопоставления местоположения, чтобы проксировать все, кроме healthcheck.html:

https://stackoverflow.com/questions/8545680/how-to-tell-apache-to-locationmatch-opposite-of-this

<LocationMatch "^(?!/healthcheck.html)">
  ProxyPassMatch http://bigassawsdomainname.com:80/  
</LocationMatch>

(proxypassreverse должен находиться за пределами соответствия местоположения)