Вопрос: Зеркалирование трафика с помощью Nginx


Мне нужно дублировать / зеркалировать трафик на мой сервер / ресурс.

Я имею в виду, что у меня есть сервер A и B и N (nginx) в качестве веб-сервера.

Весь трафик, отправляемый на N / resource -> перенаправление на A и B

Является ли это возможным?


11
2018-06-06 17:36


Источник


Вы, вероятно, не хотите этого делать. Что ты такое действительно пытаясь сделать? - Michael Hampton♦
Мне действительно нужно это сделать - Agus
У меня есть прецедент. У меня есть клиент, который выводит данные на мои серверы, которые использует наша производственная инфраструктура. Мне нужны точные данные, которые были перенесены на мои серверы dev для дальнейшей разработки. Клиент может отправлять данные только на одну конечную точку. Не спрашивайте, почему, я не знаю. - The Dude
О, мне нужно продублировать трафик, я имею в виду, что traficc будет обрабатываться A, но B будет получать автономный процесс recevid - Agus
Я нашел другую версию этого вопроса с ответом, который помог мне: serverfault.com/a/515531/175380 В основном, вы определяете местоположение, которое должно быть отражено в post_action директивы. Это будет работать после того, как запрос будет удовлетворен производственной машиной. - Adam Lukens


Ответы:


Теперь у Nginx есть модуль http-зеркала. Документация находится на https://nginx.org/en/docs/http/ngx_http_mirror_module.html

Пример конфигурации из документации:

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

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

8
2017-08-29 20:19





Основываясь на ПРОЧТИ МЕНЯ Похоже, что GOR может помочь вам решить вашу проблему.

Я никогда не использовал его раньше, просто наткнулся на него на этой неделе, так что удачи!


2
2018-06-07 18:51



Эй, используя GOR, он просто подтверждает с http 200. Поэтому, если у него есть объект ответа или проверка, он хочет сделать то, что клиент отправляет ему. Я не думаю, что это сработает для него. Насколько я могу судить, и я новичок в Gor, вы не можете передать объект результата из одного из ваших выходных сегментов. - PatrickWalker


Вот новая функция от nginx (1.13.4): http://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror

Модуль ngx_http_mirror_module (1.13.4) реализует зеркалирование исходного запроса путем создания фоновых зеркальных подзапросов. Ответы на зеркальные подзапросы игнорируются.


2
2017-11-01 21:17





вы не можете отображать запросы с помощью NGINX, но запрос доступен как переменная. Вы можете использовать сценарии Lua, чтобы отправить эту переменную на сторонний сервер в качестве вспомогательного запроса. http://nginx.org/en/docs/http/ngx_http_core_module.html#var_request


1
2017-08-27 05:15





После рытья и рытья я нашел решение. Вы можете видеть это здесь Скопируйте и доставьте запрос на другой сервер nginx для тестирования реального трафика by @scari

Просто подумал, что я должен упомянуть об этом здесь, чтобы облегчить поиск других людей. В моей настройке я не использовал uwsgi - вместо этого я хотел дублировать каждый входящий запрос на дополнительные серверы (в дополнение к серверам магистралей, которые уже были сбалансированы по нагрузке.

Надеюсь, это поможет,
Liron


0
2018-01-19 10:04