3 votes

Définition de variables conditionnelles dans nginx

J'écris une configuration nginx qui nécessite un proxy, et j'ai besoin de l'adresse IP originale. Le module HttpProxyModule de Nginx $proxy_add_x_forwarded_for semble parfaitement adaptée à la tâche, sauf que mon Nginx se trouve derrière un équilibre de charge qui ne définit pas de variable X-Forwarded-For mais X-Cluster-Client-Ip .

Maintenant, une possibilité serait d'utiliser

set X-Forwarded-For $http_x_cluster_client_ip,$proxy_add_x_forwarded_for

mais parfois il y a sont des accès directs au serveur, ce qui laisserait une virgule de tête dans l'en-tête. J'ai pensé à utiliser if mais ce scénario se situe en plein milieu des cas où if est problématique à utiliser.

Notez que, parce que le client peut avoir été proxyé, je veux préserver toutes les données présentes dans le fichier X-Forwarded-For s'il en existe un, en outre pour faire passer les données de X-Cluster-Client-Ip .

Des alternatives ?

2voto

etagenklo Points 5599

Vous pouvez utiliser le module nginx HttpRealipModule pour filtrer les accès de l'équilibreur de charge :

set_real_ip_from   192.168.0.1;
real_ip_header     X-Cluster-Client-Ip;

http://wiki.nginx.org/HttpRealipModule

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X