Saya punya reverse-proxy nginx yang proksi permintaan dari ELB amazon luar ke ELB internal.
Saya punya 6 contoh backend yang menangani permintaan. Konfigurasi yang diaktifkan situs terlihat seperti ini, tetapi ada nomor port dan proxy_pass yang berbeda. Semuanya identik:
server {
listen 3000;
location / {
proxy_pass http://internal-prod732r8-PrivateE-1GJ070M0745TT-348518554.eu-west-1.elb.amazonaws.com:3000;
include /etc/nginx/proxy.conf;
}
}
Sekali setiap 24 jam salah satu konfigurasi berhenti bekerja. Semua proxy lainnya berfungsi dengan baik. Jika saya me-restart nginx semua konfigurasi berfungsi kembali. Tidak ada di error.log, tidak ada yang aneh di akses log, syslog atau dmesg.
Apakah ini sesuatu yang diketahui? Apakah saya melakukan sesuatu yang salah dengan konfigurasi proxy saya? Apakah ada log lain yang bisa saya lihat?
nginx
reverse-proxy
pengguna202172
sumber
sumber
Jawaban:
Jawaban untuk pertanyaan ini adalah bahwa ELB terkadang mengubah alamat ip dan nginx tidak menyelesaikan nama saat mulai.
Untuk memperbaiki ini selalu ada server DNS di VPC Anda di 0,2. Jadi jika ip CIDR lokal adalah 10.0.0.0/16 server DNS berada di 10.0.0.2.
Tambahkan ini ke konfigurasi nginx.
Proxy_pass juga perlu didefinisikan sebagai variabel jika tidak, nginx hanya akan menyelesaikannya sekali. Jadi berdasarkan konfigurasi di atas ini adalah konfigurasi yang benar:
sumber
Jika proxy_pass Anda tidak diteruskan langsung ke satu URL seperti contoh Anda tunjukkan ( http://amazonaws.com ), tetapi alih-alih ke proxy hulu pertanian, seperti ini:
Maka Anda tidak akan terlalu khawatir dengan salah satu upstream yang gagal sementara. Karena mereka semua akan melakukan pekerjaan yang sama. Jika seseorang gagal menjawab, maka yang berikutnya akan diproksi untuk respons itu. Ketenangan pikiran.
Nginx akan melewati mesin yang gagal selama x detik secara otomatis. Sampai Anda memperbaikinya, atau sampai kembali dengan sendirinya. ( http://wiki.nginx.org/HttpUpstreamModule )
Jadi, apa pun alasan interupsi Anda, dengan mendistribusikannya di farm upstream, ini dikonversi menjadi pengaturan yang lebih mudah.
sumber