J'ai un serveur Web derrière un équilibreur de charge.
Je dois ajouter une redirection conditionnelle à mon .htaccess afin d'afficher une page de maintenance chaque fois que nous mettons le site hors ligne pour maintenance. Cette partie est simple:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Cependant, je veux ajouter à condition que si l'adresse IP du visiteur est la mienne, elle ne me redirige pas vers la page de maintenance et que je puisse voir et tester le site comme s'il était en ligne. Cette partie est normalement aussi simple:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Cependant, comme mon serveur Web se trouve derrière un équilibreur de charge, il REMOTE_ADDR
est résolu en l'adresse IP interne du serveur Load Balance.
Comment puis-je modifier cela pour rechercher l'adresse IP transférée? Je sais qu'en PHP, vous pouvez utiliser $_SERVER['HTTP_X_FORWARDED_FOR']
pour obtenir l'adresse IP transférée. J'ai essayé quelques trucs dans le .htaccess
mais pas de chance:
%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
SOLUTION
J'ai obtenu le travail suivant:
%{HTTP:X-FORWARDED-FOR}
.jpe
ou.jp
fichiers?Réponses:
Utiliser
%{HTTP:X-FORWARDED-FOR}
au lieu de%{REMOTE_ADDR}
la source
Vous avez besoin de mod_rpaf . Ce module réécrira REMOTE_ADDR dans apache avec un autre en-tête, tel que x-forwarded-for. Très utile pour que les applications PHP se comportent avec les équilibreurs de charge.
la source
http://blog.janjonas.net/2010-01-04/apaches-mod_rewrite-mod_proxy-use-reverse-proxy-request-headers-for-rewrite-rules
Serait-ce la réponse?
la source
Si vous avez deux environnements, disons une production derrière l'équilibrage de charge et un développement ou une mise en scène non derrière l'équilibre de charge, et que vous souhaitez utiliser le même fichier .htaccess, vous aurez besoin à la fois de% {HTTP: X-FORWARDED-FOR} et % {REMOTE_ADDR} - attribuez des adresses IP aux deux conditions.
la source