9
votes

Comment configurer NGinx pour agir comme un équilibreur de charge pour les proxies?

Je suis conscient que Nginx peut être configuré pour agir comme équilibreur de charge, mais je me demande s'il est possible de charger l'équilibre entre les proxies? Disons que j'ai plusieurs proxies fonctionnant sur localhost, et je souhaite utiliser NGinx pour fournir un point de connexion unique afin que je puisse faire pivoter entre les proxies. J'essaie d'atteindre quelque chose de similaire à la poste ici , qui utilise haproxy au lieu de nginx. J'ai ce qui suit nginx.conf : xxx

Cependant, lorsque j'envoie une demande de courbure comme ceci: xxx < p> Il ignore l'URL et je reçois une réponse similaire à ce que j'attendrais si j'avais envoyé directement une demande à l'un des serveurs de proxy, comme: xxx

de Bien sûr, je ne m'attendais pas vraiment à ce qu'il fonctionne, car il doit y avoir une certaine option pour dire NGinx de traiter les serveurs en amont comme proxies eux-mêmes. Cependant, je n'ai pas pu trouver comment faire cela après avoir cherché en ligne.


5 commentaires

Je ne suis pas sûr de votre problème, quel est votre problème et qu'est-ce que vous appelez un proxy - comme vous, la balance de la charge NGinx est également un proxy inverse -? Votre problème est-il le fait que vous n'avez pas d'en-tête d'hôte? Essayez d'ajouter proxy_set_header host host host; après une instruction proxy_pass.


J'essaie d'utiliser Nginx pour faire pivoter entre plusieurs proxies que j'ai installées. En d'autres termes, je veux pouvoir pouvoir se connecter à Nginx Host and Port (IE Localhost: 8080) en tant que proxy, et elle tournera entre les proxies que j'ai installées


OK, et avez-vous essayé la chose hôte? Parce qu'un proxy inverse est presque transparent, NOBLY soucie si le backend proxyied est des serveurs finaux ou également un proxy, mais vous devez savoir quel domaine vous transmettez sur le proxy.


Essayé mais ne semblait pas travailler pour une raison quelconque ... sur une note latérale, j'ai pu installer la même chose sur AWS avec un équilibreur de charge élastique et un groupe d'instances EC2, mais je devais mettre en place un Règle TCP pour l'équilibreur de charge au lieu de HTTP afin qu'il fonctionne. Pas sûr si c'est aussi le cas ici?


Avez-vous une idée si Haprexy comprend? J'aimerais utiliser cette méthode que vous avez liée mais maintenir la liste de proxy dans un fichier séparé.


3 Réponses :


4
votes

Les Documents Nginx disent que les amont sont distribués à l'aide d'une méthode rond-robine.

Par défaut, les demandes sont distribuées entre les serveurs en utilisant un Méthode d'équilibrage rond-robin pondérée

https://nginx.org/en/docs/http/ngx_http_uptream_module.html < / a>


0 commentaires

0
votes

Vous auriez besoin de configurer la règle d'équilibrage de la charge pour les proxies pondérées ou autres

quelque chose comme MAX_FAILS = 1 échec_timeout = 10S; P>

        Can you put max_fails =1 and fail_timeout=10s; after the proxies

    server localhost:9998 max_fails =1 and fail_timeout=10s;
    server localhost:9999 max_fails =1 and fail_timeout=10s;
    server localhost:10000 max_fails =1 and fail_timeout=10s;


  change location /{ 
       to location @proxy{


1 commentaires

Pouvez-vous fournir un exemple complet ici?



1
votes

Comme vous pouvez le voir dans votre POST HAPROXY AKT AKT en tant que proxy en avant

option http_proxy

Quelle moyenne d'option est décrite dans le manuel https://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-Option%20HTTP_PROXY

Il arrive parfois que les gens ont besoin d'un proxy http pure qui comprend les demandes de proxy de base sans mise en cache ni aucune fantaisie caractéristique. Dans ce cas, il peut être intéressant de mettre en place une instance haproxy avec l'ensemble "option http_proxy". Dans ce mode, aucun serveur n'est déclaré, et la connexion est transmise à l'adresse IP et au port trouvé dans l'URL après le schéma "http: //".

aucune résolution d'adresse d'hôte n'est effectuée, cela ne fonctionne donc que lorsque Pure Les adresses IP sont passées. Depuis que le périmètre d'utilisation de cette option est plutôt limité, il ne sera probablement pas utilisé que par des experts qui savent qu'ils ont besoin exactement ça. Ceci est incompatible avec le mode HTTP Tunnel.

Autant que je connaisse Nginx n'a pas cette fonctionnalité.

une question similaire cela cela. https://superuser.com/questions/604352/nginx-s-forward-proxy- pour-https

Pourquoi ne pouvez-vous pas utiliser le haproxy comme décrit dans le message de votre lien?


1 commentaires

Haproxy ne vous permet pas d'inclure un fichier dans une configuration. Je veux gérer un fichier proxies.List fichier importé. NGinx a inclut, mais apparemment, vous ne pouvez pas transférer des demandes à un proxy HTTP?