Mon ELB continue de mettre mes instances hors service, car le contrôle d'intégrité HTTP échoue.
Nous avons un caractère générique DNS et nous redirigeons tout vers 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]
Cela fonctionne bien pour les navigateurs réels, mais le contrôle d'intégrité HTTP échoue /, probablement parce qu'il obtient un 302.
La meilleure option est-elle d'utiliser une vérification de l'état TCP ou existe-t-il un moyen de faire fonctionner HTTP?
Réponses:
Cette question a été posée sur les forums AWS et la réponse a été de configurer un vhost par défaut qui gère le trafic sur l'adresse IP nue et n'effectue aucune redirection. Cela signifie que les utilisateurs normaux qui ont atteint votre adresse IP ne seront pas redirigés non plus.
Vous pouvez également spécifier la partie chemin de l'URL que vous souhaitez que l'ELB demande et ignorer ce chemin en ajoutant un autre RewriteCond:
Les utilisateurs normaux qui ont atteint cette URL ne seront pas redirigés.
Vous pouvez également utiliser la même technique pour détecter l'agent utilisateur de l'ELB.
Les utilisateurs normaux qui usurpent leur agent utilisateur ne seront pas redirigés.
Ou l'adresse IP interne de l'ELB.
Pour que cette option fonctionne, vous aurez besoin
mod_rpaf
(pour Apache 2.2) oumod_remoteip
(pour Apache 2.4) de modifier laREMOTE_ADDR
variable pour qu'elle contienne la partie correcte du contenu de l'en-X-Forwarded-For
tête. Tant que vous le configurez correctement, il ne devrait pas être possible pour un utilisateur normal d'éviter la réponse de redirection.la source
10.
. Les autres parties de l'adresse IP peuvent changer autant qu'elles le souhaitent et elles seront toujours appariées. La10.*.*.*
plage d'adresses IP (ou 10.0.0.0/8) n'est pas routable sur Internet.Ajouter des hôtes virtuels n'est pas une bonne idée, car il faut redémarrer le service httpd pour que les hôtes virtuels soient reflétés. Il existe une autre façon de procéder
séparez les quatre parties du nom DNS comme suit
elb_dns_name: elb-name.subnet_zone.elb.amazonaws.com
Pour toutes les URL restantes ont des règles de réécriture internes
directory_scructure: code_folder / website
RewriteEngine On
RewriteCond% {HTTP_HOST}! $ [NC]
RewriteCond% {REQUEST_URI}! ^ / Index.php $
RewriteRule ^ (. *) $ / $ 1 [L, QSA]
Cela a très bien fonctionné pour moi. Veuillez suggérer s'il y a de meilleures méthodes cheers!
la source