Meu ELB continua desativando minhas instâncias, porque a verificação de integridade do HTTP está falhando.
Temos um curinga de DNS e redirecionamos tudo para 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]
Isso funciona bem para navegadores reais, mas a verificação de integridade HTTP para / falha, presumivelmente porque está recebendo um 302.
É a melhor opção para usar uma verificação de integridade do TCP ou existe uma maneira de fazer o HTTP funcionar?
Respostas:
Esta pergunta foi feita nos fóruns da AWS e a resposta foi configurar um vhost padrão que lida com tráfego no endereço IP simples e não faz redirecionamentos. Isso significa que os usuários normais que acessarem seu endereço IP também não serão redirecionados.
Como alternativa, você pode especificar a parte do caminho da URL que deseja que o ELB solicite e ignorar esse caminho adicionando outro RewriteCond:
Usuários normais que acessam esse URL não serão redirecionados.
Você também pode usar a mesma técnica para detectar o User-Agent do ELB.
Usuários normais que falsificam seu User-Agent não serão redirecionados.
Ou o endereço IP interno do ELB.
Para que esta opção funcione, você precisará
mod_rpaf
(no Apache 2.2) oumod_remoteip
(no Apache 2.4) modificar aREMOTE_ADDR
variável para conter a parte correta do conteúdo doX-Forwarded-For
cabeçalho. Desde que você o configure corretamente, não deve ser possível para um usuário normal evitar a resposta de redirecionamento.fonte
10.
. O restante das partes do endereço IP pode mudar o quanto quiserem e ainda serão correspondidas. O10.*.*.*
intervalo (ou 10.0.0.0/8) de endereços IP não é roteável pela Internet.Adicionar hosts virtuais não é uma boa ideia, pois é necessário reiniciar o serviço httpd para que os hosts virtuais sejam refletidos. Existe uma maneira alternativa de fazer isso
separe todas as quatro partes do nome do DNS, como segue
elb_dns_name: elb-name.subnet_zone.elb.amazonaws.com
Para todos os URLs restantes, existem regras internas de reescrita
directory_scructure: code_folder / website
RewriteEngine On
RewriteCond% {HTTP_HOST}! $ [NC]
RewriteCond% {REQUEST_URI}! ^ / Index.php $
RewriteRule ^ (. *) $ / $ 1 [L, QSA]
Isso funcionou muito bem para mim. Por favor, sugira se existem melhores métodos de saúde!
fonte