Saat ini saya memiliki ELB yang melayani http://www.example.org dan https://www.example.org .
Saya ingin mengaturnya sehingga permintaan apa pun yang mengarah ke http://www.example.org dialihkan ke https://www.example.org .
ELB mengirimkan permintaan https sebagai permintaan http, jadi menggunakan:
server {
listen 80;
server_name www.example.org;
rewrite ^ https://$server_name$request_uri? permanent;
}
tidak akan berfungsi karena permintaan yang dibuat ke https://www.example.org masih akan dilakukan ke port 80 di nginx.
Saya tahu mungkin untuk menulis ulang sebagai
server {
listen 80;
server_name www.example.org;
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$1 permanent;
}
}
Tetapi semua yang saya baca mengatakan bahwa if
harus dihindari di semua biaya dalam konfigurasi nginx, dan ini akan untuk setiap permintaan tunggal. Juga, itu berarti saya harus mengatur konfigurasi terpisah khusus untuk pemeriksaan kesehatan ( seperti dijelaskan di sini : "... ketika Anda berada di belakang ELB, di mana ELB bertindak sebagai titik akhir HTTPS dan hanya mengirim lalu lintas HTTP ke server Anda, Anda mematahkan kemampuan untuk merespons dengan respons HTTP 200 OK untuk pemeriksaan kesehatan yang dibutuhkan ELB ").
Saya mempertimbangkan untuk memasukkan login ke dalam kode aplikasi web daripada konfigurasi nginx (dan untuk keperluan pertanyaan ini mari kita asumsikan itu adalah aplikasi berbasis Django), tetapi saya tidak yakin apakah itu akan lebih mahal daripada yang if
di konfigurasi.