Дзеркальний трафік за допомогою Nginx


16

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

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

Весь трафік, що надходить на N / Resource -> переадресацію на A і B

Це можливо?


2
Ви, мабуть, не хочете цього робити. Що ви насправді намагаєтесь зробити?
Майкл Хемптон

1
Мені це справді потрібно, щоб це зробити
Агус

2
У мене є випадок використання. У мене є клієнт, який передає дані на свої сервери, якими користується наша виробнича інфраструктура. Мені потрібні такі самі дані, які передаються моїм серверам розробників для подальшого розвитку. Клієнт здатний надсилати дані лише до 1 кінцевої точки. Не запитай, чому я не знаю.
Чувак

1
О, мені потрібно дублювати трафік, я маю на увазі, що трафік буде обробляти A, але B отримає зробити офлайн процес
Агус

2
Я знайшов іншу версію цього питання з відповіддю, яка мені допомогла: serverfault.com/a/515531/175380 В основному ви визначаєте місце відображення в post_actionдирективі. Це буде запущено після того, як виробничий апарат буде задоволений запитом.
Адам Лукенс

Відповіді:


14

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

Чи є спосіб я використовувати дзеркало, навіть якщо один з хостів вниз, у мене є випадок використання для цього.
Сагар Хараб

3

Ось нова функція від nginx (1.13.4): http://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror

Модуль ngx_http_mirror_module (1.13.4) реалізує дзеркальне відображення вихідного запиту, створюючи підзапроси фонового дзеркала. Відповіді на дзеркальні запити ігноруються.


2

На основі їх README Схоже, GOR може допомогти вам вирішити вашу проблему.

Я ніколи не використовував його раніше, просто натрапив на нього на цьому тижні, так що удачі!


Привіт, якщо використовувати GOR, він просто визнає http 200. Тож якщо у нього є об'єкт відповіді або перевірка, він хоче зробити те, що клієнт надсилає йому, я не думаю, що це буде працювати для нього. Наскільки я можу сказати, і я новачок у Gor, ви не можете передавати результат об'єкта з одного з своїх вихідних сегментів.
PatrickWalker

Зараз ми тестуємо GOR, і у нас є кілька проблем. Він інтерпретує заголовки на зразок: Location: // newpath, що генерує запити, такі як GET // newpath. Переспрямовує вільні оригінальні заголовки (включаючи головний Useragent тощо). Ми переходимо до іншого інструменту.
Алекс Габі


0

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

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

Сподіваюся, це допоможе,
Лірон

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.