Mise en miroir du trafic avec Nginx


16

J'ai besoin de dupliquer / refléter le trafic provenant de mon serveur / ressource.

Je veux dire, j'ai le serveur A et B et N (nginx) comme serveur Web.

Tout le trafic provenant de N / ressource -> rediriger vers A et B

C'est possible?


2
Vous ne voulez probablement pas faire ça. Qu'essayez-vous vraiment de faire?
Michael Hampton

1
J'en ai vraiment besoin pour le faire
Agus

2
J'ai un cas d'utilisation. J'ai un client qui envoie des données sur mes serveurs que notre infrastructure de production utilise. J'ai besoin que les mêmes données soient transmises à mes serveurs de développement pour un développement ultérieur. Le client est uniquement capable d'envoyer les données à 1 point de terminaison. Ne demandez pas pourquoi, je ne sais pas.
The Dude

1
Oh j'ai besoin de dupliquer le trafic, je veux dire que le trafic sera traité par A, mais B pourra recevoir un processus hors ligne
Agus

2
J'ai trouvé une autre version de cette question avec une réponse qui m'a aidé: serverfault.com/a/515531/175380 Fondamentalement, vous définissez l'emplacement à refléter dans une post_actiondirective. Cela s'exécutera après que la demande a été satisfaite par la machine de production.
Adam Lukens

Réponses:


14

Nginx dispose désormais d'un module miroir http. La documentation est à https://nginx.org/en/docs/http/ngx_http_mirror_module.html

Exemple de configuration de la documentation:

location / {
    mirror /mirror;
    proxy_pass http://backend;
}

location /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
}

Existe-t-il un moyen d'utiliser un miroir même si l'un des hôtes est en panne, j'ai un cas d'utilisation pour cela.
Sagar Kharab


2

Sur la base de leur README, il semble que GOR pourrait vous aider à résoudre votre problème.

Je ne l'ai jamais utilisé auparavant, je suis juste tombé dessus cette semaine, alors bonne chance!


Hé sur l'utilisation de GOR, il reconnaît juste avec un http 200. Donc, s'il a un objet de réponse ou une validation qu'il veut faire avec ce que le client lui envoie, je ne pense pas que cela fonctionnera pour lui. Pour autant que je sache, et je suis nouveau sur Gor, vous ne pouvez pas transmettre l'objet résultat de l'un de vos segments de sortie.
PatrickWalker

Nous testons actuellement le GOR et nous avons quelques problèmes. Il interprète les en-têtes comme: Location: // newpath générant des requêtes comme GET // newpath. Redirige les en-têtes originaux lâches (y compris l'agent utilisateur hôte, etc.) Nous migrons vers un autre outil.
Aalex Gabi


0

Après avoir creusé et creusé, j'ai trouvé une solution. Vous pouvez le voir ici Copier et envoyer une demande à un autre serveur nginx pour des tests de trafic réel par @scari

Je pensais juste que je devrais le mentionner ici pour faciliter la recherche d'autres personnes. Dans ma configuration, je n'ai pas utilisé uwsgi - au lieu de cela, je voulais dupliquer chaque demande entrante sur des serveurs supplémentaires (en plus des serveurs principaux qui étaient déjà équilibrés en charge).

J'espère que cela vous aidera,
Liron

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.