Мой ELB продолжает выводить мои экземпляры из строя, потому что проверка состояния HTTP не проходит.
У нас есть подстановочный знак DNS, и мы перенаправляем все на www:
vhost.conf:
ServerName www.example.com
ServerAlias *.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com/$1 [R=301,L]
Это отлично работает для реальных браузеров, но проверка работоспособности HTTP на / не выполняется, предположительно, потому что он получает 302.
Наилучший вариант - использовать проверку работоспособности TCP или есть способ заставить HTTP работать?
Ответы:
Этот вопрос задавался на форумах AWS, и ответ состоял в том, чтобы настроить vhost по умолчанию, который обрабатывает трафик на голом IP-адресе и не выполняет никаких перенаправлений. Это будет означать, что обычные пользователи, попавшие на ваш IP-адрес, также не будут перенаправлены.
В качестве альтернативы вы можете указать часть пути URL, которую вы хотите, чтобы ELB запрашивал, и игнорировать этот путь, добавив еще один RewriteCond:
Обычные пользователи, попавшие на этот URL, не будут перенаправлены.
Вы также можете использовать ту же технику, чтобы обнаружить User-Agent ELB.
Обычные пользователи, которые подделывают свой User-Agent, не будут перенаправлены.
Или внутренний IP-адрес ELB.
Чтобы эта опция работала, вам потребуется
mod_rpaf
(для Apache 2.2) илиmod_remoteip
(для Apache 2.4) изменитьREMOTE_ADDR
переменную, чтобы она содержала правильную часть содержимогоX-Forwarded-For
заголовка. До тех пор, пока вы настроите его правильно, обычный пользователь не сможет избежать ответа на перенаправление.источник
10.
. Остальные части IP-адреса могут меняться настолько, насколько они хотят, и они все равно будут сопоставлены. Диапазон10.*.*.*
(или 10.0.0.0/8) IP-адресов не маршрутизируется через Интернет.Добавление виртуальных хостов не является хорошей идеей, поскольку необходимо перезапустить службу httpd, чтобы виртуальные хосты отразились. Есть альтернативный способ сделать это
все четыре части имени DNS, как
показано ниже: elb_dns_name: elb-name.subnet_zone.elb.amazonaws.com
Для всех оставшихся URL есть внутренние правила перезаписи
directory_scructure: code_folder / website
RewriteEngine On
RewriteCond% {HTTP_HOST}! $ [NC]
RewriteCond% {REQUEST_URI}! ^ / Index.php $
RewriteRule ^ (. *) $ / $ 1 [L, QSA]
Это сработало очень хорошо для меня. Пожалуйста, предложите, если есть лучшие методы ура!
источник