Nginx mengembalikan 502 saat backend mulai ulang. Bagaimana saya bisa membuat proxy nginx coba lagi N kali dengan penundaan M detik? Apakah ada plugin atau yang lainnya?
16
Saya menemukan bahwa Nginx membutuhkan waktu ~ 2 detik untuk melelahkan upaya jika Anda menentukan ratusan instance dari backend yang sama:
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
(.... eh, ulangi seperlunya!)
Ya, kludge yang menghebohkan - tetapi itu menambah tingkat keuletan ...
Lebih buruk dari itu, Anda bisa menggunakan:
server localhost:8080 max_fails=0;
server localhost:80 backup;
Dengan asumsi Nginx berjalan pada port 80, ini akan mencoba untuk terus loop permintaan di sekitar Nginx sampai localhost: 8080 merespons. Yaitu coba lagi jumlah waktu tak terbatas (?) Dengan penundaan nol detik.
Saya akan kembali ke sel empuk saya sekarang ....
Jika instalasi nginx Anda memiliki dukungan Lua maka Anda dapat bertahan pada klien untuk beberapa waktu dengan metode tidur. Operasi ini tidak menghalangi dan tidak mengunci pekerja. Perlu diingat bahwa pengguna tidak dapat ditahan tanpa batas karena beberapa waktu habis jaringan / firewall terkait lainnya mungkin terjadi pada akhirnya.
Kemudian dalam daftar hulu Anda, Anda perlu menambahkan server di atas sebagai cadangan untuk menampung klien.
Dan ini harus dimasukkan dalam spesifikasi lokasi proksi Anda:
sumber
lua
modul ke nginx di ubuntu 17.04 jalankan:sudo apt-get install libnginx-mod-http-lua
Hal terdekat yang saya tahu adalah proyek ini , tetapi saya tidak pernah menggunakan. Saya tahu bahwa vernis telah memeriksa backend, mungkin Anda ingin melihatnya.
sumber