Menggunakan satu ELB per aplikasi adalah cara untuk pergi ke sini.
Pertama, Anda mungkin tetap membutuhkannya jika setiap aplikasi menggunakan domainnya sendiri dan Anda perlu mendukung SSL. ELB Amazon saat ini hanya memperbolehkan satu sertifikat SSL untuk setiap domain, membutuhkan ELB terpisah untuk setiap domain yang mendukung SSL. (Sertifikasi Wildcard SSL menjadi pengecualian).
Tantangannya di sini adalah bahwa pemeriksaan kesehatan ELB saat ini tidak dapat diarahkan ke domain virtual tertentu yang dihosting pada instance EC2. (Tidak ada "Host:" header dikirim). Ping kesehatan ELB selalu pergi ke domain default, seolah-olah Anda telah memuat alamat IP untuk instance EC2 di browser Anda. Jadi diperlukan beberapa lem untuk menerima cek kesehatan pada domain default dan kemudian membalas dengan status kesehatan aplikasi tertentu.
Berikut adalah contoh konfigurasi yang berfungsi yang dapat ditambahkan ke server
direktif Nginx . Ini akan diinstal pada setiap instance EC2 yang memuat secara seimbang.
# This goes in the `server` block noted by 'default_server', often /etc/nginx/sites-enabled/default
# All AWS Health Checks from the ELBs arrive at the default server.
# Forward these requests on the appropriate configuration on this host.
location /health-check/ {
rewrite ^/health-check/(?<domain>[a-zA-Z0-9\.]+) /api/v1/status break;
# Lie about incoming protocol, to avoid the backend issuing a 301 redirect from insecure->secure,
# which would not be considered successful.
proxy_set_header X-Forwarded-Proto 'https';
proxy_set_header "Host" $domain;
proxy_pass http://127.0.0.1;
}
Dalam pengaturan "Pemeriksaan Kesehatan" pada ELB untuk "first-application.com", Anda akan memilih "HTTP" dan Port 80 dan masukkan path seperti:
/health-check/first-application.com
Dengan konfigurasi Nginx di atas yang berjalan di host, permintaan akan diterima di domain default dan proksi respons dari konfigurasi Nginx di host yang sama untuk https://first-application.com/api/v1/status
Dengan pendekatan ini tidak ada konfigurasi per-aplikasi di Nginx. Selama setiap aplikasi memiliki nama domain yang unik, Anda hanya perlu memastikan bahwa Anda mengatur ELB untuk setiap aplikasi dengan tepat.