Mencerminkan Lalu Lintas dengan Nginx

16

Saya perlu menduplikasi / mirror traffic yang datang ke server / sumber daya saya.

Maksudku, aku punya server A dan B dan N (nginx) sebagai server web.

Semua traffic yang menuju ke N / resource -> redirect ke A dan B

Apa itu mungkin?

Agus
sumber
2
Anda mungkin tidak ingin melakukan ini. Apa yang sebenarnya ingin Anda lakukan?
Michael Hampton
1
Saya benar-benar membutuhkannya untuk melakukannya
Agus
2
Saya punya kasus penggunaan. Saya memiliki klien yang mendorong data ke server saya yang menggunakan infrastruktur produksi kami. Saya perlu data yang sama persis didorong ke server dev saya untuk pengembangan lebih lanjut. Klien hanya mampu mengirim data ke 1 titik akhir. Jangan tanya kenapa, saya tidak tahu.
The Dude
1
Oh, saya perlu menduplikasi traffic, maksud saya traficc akan diproses oleh A, tapi B akan menerima proses offline
Agus
2
Saya menemukan versi lain dari pertanyaan ini dengan jawaban yang membantu saya: serverfault.com/a/515531/175380 Pada dasarnya, Anda mengatur lokasi untuk dicerminkan dalam post_actionarahan. Ini akan berjalan setelah permintaan dipenuhi oleh mesin produksi.
Adam Lukens

Jawaban:

14

Nginx sekarang memiliki modul cermin http. Dokumentasi ada di https://nginx.org/en/docs/http/ngx_http_mirror_module.html

Contoh konfigurasi dari dokumentasi:

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

location /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
}
Slack Undertow
sumber
Apakah ada cara agar saya bisa menggunakan mirror walaupun salah satu hostnya down, saya punya use case untuk itu.
Sagar Kharab
3

Berikut adalah fitur baru dari nginx (1.13.4): http://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror

Modul ngx_http_mirror_module (1.13.4) mengimplementasikan pencerminan dari permintaan asli dengan membuat subrequest cermin latar belakang. Respons terhadap mirror subrequest diabaikan.

BLiN
sumber
2

Berdasarkan README mereka Tampaknya GOR dapat membantu Anda memecahkan masalah Anda.

Saya tidak pernah menggunakannya sebelumnya, baru saja menemukannya minggu ini, semoga beruntung!

Marcel
sumber
Hei menggunakan GOR itu hanya mengakui dengan http 200. Jadi jika dia memiliki objek respons atau validasi dia ingin dilakukan dengan apa yang klien kirimkan kepadanya, saya tidak berpikir ini akan bekerja untuknya. Sejauh yang saya tahu, dan saya baru di Gor, Anda tidak bisa meneruskan objek hasil dari salah satu segmen output Anda.
PatrickWalker
Kami sedang menguji GOR sekarang dan kami memiliki beberapa masalah. Ini menafsirkan header seperti: Lokasi: // newpath menghasilkan permintaan seperti GET // newpath. Arahkan ulang header asli yang longgar (termasuk agen pengguna host, dll.) Kami sedang bermigrasi ke alat lain.
Aalex Gabi
0

Setelah menggali dan menggali, saya menemukan solusi. Anda dapat melihatnya di sini Menyalin dan mengirimkan permintaan ke server nginx lain untuk pengujian lalu lintas nyata oleh @scari

Hanya berpikir saya harus menyebutkannya di sini untuk memudahkan pencarian orang lain. Pada pengaturan saya, saya tidak menggunakan uwsgi - sebagai gantinya saya ingin menduplikasi setiap permintaan masuk ke server tambahan (selain server tulang punggung yang sudah memuat seimbang.

Semoga ini bisa membantu,
Liron

Liron
sumber