Situs web kami membutuhkan kepatuhan HIPAA sehingga semuanya harus dienkripsi. Saya tidak ingin klien mendapatkan pesan kesalahan ketika mereka memasukkan " http : //mysite.com", jadi saya perlu mendukung HTTP dan HTTPS, dan mengalihkan HTTP ke HTTPS. Apakah saya benar?
Saya melakukannya dengan benar di server web. Jadi jika saya langsung terhubung ke server web, HTTP secara otomatis dialihkan ke HTTPS. Semuanya bagus.
Tetapi server web duduk di belakang Aplikasi Load Balancer AWS. Saya tidak tahu cara mengarahkan HTTP ke HTTPS di ELB. Jadi browser klien masih dapat terhubung ke ELB melalui HTTP.
Bagaimana cara mengatur HTTP => HTTPS pada Aplikasi Load Balancer AWS?
Dengan kata lain, saya yakin koneksi antara ELB dan server web adalah HTTPS, tetapi bagaimana memastikan koneksi antara browser klien dan ELB adalah HTTPS?
sumber
X-Forwarded-Proto
header yang dikirim LB.Jawaban:
Anda dapat menambahkan konfigurasi yang tercantum di bawah ini ke file .htaccess Anda. Tetapi sebelum itu pastikan mod_rewrite diaktifkan di server dan file .htaccess tidak ditolak.
Untuk penjelasan terperinci silakan membaca dokumentasi resmi dari aws end. https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/
sumber
Pada Juli 2018 , ini didukung pada penyeimbang beban aplikasi.
HTTP:80
pendengar AndaRedirect
https
443
Original host, path, query
301 - Permanently moved
Gambar pengaturan untuk pendengar HTTP ke HTTPS pada penyeimbang beban aplikasi AWS
sumber
Biasanya yang terjadi adalah bahwa ELB diatur untuk menerima https (port 443) dan meneruskan ke instance EC2 (load balancer target) di http (port 80).
Server web backend mengalihkan permintaan ini ke port 443 pada load balancer, menyebabkan loop redirect yang tak terbatas (antara load balancer dan server web backend).
Pesan kesalahan umum adalah
ERR_TOO_MANY_REDIRECTS
.Solusinya adalah dengan melihat X-Forwarded-Proto, yang merupakan protokol seperti yang terlihat oleh load balancer, ketika memutuskan pengalihan.
Untuk nginx konfigurasi akan terlihat seperti ini:
dan untuk apache .htaccess sesuatu seperti ini:
CATATAN: Meskipun orang mungkin berpikir akan lebih mudah jika ini dapat ditangani tanpa konfigurasi ulang server web, pada musim semi 2018 tidak ada cara untuk menyelesaikan ini hanya menggunakan ELB, yaitu Anda harus mengkonfigurasi server web Anda untuk membuat pekerjaan ini.
sumber