Apache: Comment écrire X-Forwarded-For avec équilibrage de charge et 2 serveurs?
J'ai un équilibreur de charge et de deux serveurs. Je veux ajouter X-Forwarded-For dans mon apache afin que je puisse voir l'adresse IP de la demande plutôt que de voir l'équilibreur de charge IP pour chaque demande. Comment puis-je faire? Je l'ai regardé et X-Forwarded-For: client, proxy1, proxy2
ressemble à une solution. Serait client de l'équilibrage de charge IP, proxy1 être le Serveur 1 de l'IP, et proxy2 être Serveur 2 IP?
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous avez déjà référencé http://en.wikipedia.org/wiki/X-Forwarded-For - ce qui est probable, où vous avez copié votre
X-Forwarded-For: client, proxy1, proxy2
format de.J'ai aussi supposer que vous êtes un équilibreur de charge (autre chose que Apache HTTPD), qui dirige le trafic vers votre "serveurs" - avec votre "Apache" inclus sur chaque serveur, et que vous savez comment le configurer votre équilibreur de charge pour passer cet en-tête.
Je pense que la pièce manquante que vous devez comprendre, c'est ce (également à partir de la page de Wikipedia):
I. E., si votre équilibreur de charge est la seule procuration donné que la demande passe par (au moins), la seule qui ajoute un X-Forwarded-For-tête), puis l'en-tête comprend uniquement une valeur de votre équilibreur de charge.
Supposons que vous faites face à une demande d'un client avec 203.0.113.1, et que la demande est faite par le biais de votre programme d'équilibrage de charge qui a une IP de 192.0.2.1. Votre HTTP Apache instance en cours d'exécution sur l'un de vos 2 serveurs devriez alors voir la demande en provenance de 192.0.2.1, avec:
X-Forwarded-For: 203.0.113.1
.Afin de voir cet en-tête dans votre Apache HTTPD journaux, vous avez besoin d'utiliser quelque chose comme ceci:
L'équilibreur de charge IP (192.0.2.1) montrent encore que le 1er champ (
%h
) dans l'entrée du journal, mais le dernier champ (\"%{X-Forwarded-For}i\"
) contient l'IP du client(s) - dans ce cas,203.0.113.1
. Si le client est derrière un proxy supplémentaires qui indiquent également lesX-Forwarded-For
, puis va être une liste séparée par des virgules - avec la la plus à gauche de l'adresse étant le "plus proche" de vos serveurs - I. E., celle que votre équilibreur de charge a reçu la demande de.192.0.2.1
? X-Forwarded-For: 192.0.2.1 ?X-Forwarded-For
n'importe où dans votre configuration d'Apache (autres que pour comprendre sa valeur dans le format d'enregistrement, comme mentionné ci-dessus). Votre équilibreur de charge doit être la définition de cette additionnelle d'un en-tête HTTP de la requête qui sera reçu par l'un de vos Apache HTTP instances.LogFormat ...
à mon apache et de le recharger?%h
) dans l'entrée de journal - mais, si vous avez modifié votre format de journal (avec unCustomLog
déclaration, vous devriez voir le X-Forwarded-For les valeurs à la fin de chaque ligne de journal. Encore une fois, vous auriez également besoin de vérifier que votre équilibreur de charge est en fait la création et l'envoi de cet en-tête. (Sinon, si vous avez déménagé à quelque chose comme l'équilibrage de charge DNS au lieu d'un NAT ou proxy modèle, Apache serait en fait "voir" les demandes que le client IPS qu'ils venaient de.)