Назад | Перейти на главную страницу

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

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

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

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

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

В 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;
}

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

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

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

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

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

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

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

Надеюсь, это поможет,
Лирон