ELB saya terus mengeluarkan instance saya dari layanan, karena pemeriksaan kesehatan HTTP gagal.
Kami memiliki wildcard DNS, dan mengarahkan semuanya ke www:
vhost.conf:
ServerName www.example.com
ServerAlias *.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com/$1 [R=301,L]
Ini berfungsi dengan baik untuk browser yang sebenarnya, tetapi pemeriksaan kesehatan HTTP ke / gagal, mungkin karena mendapatkan 302.
Apakah opsi terbaik untuk menggunakan pemeriksaan kesehatan TCP, atau apakah ada cara agar HTTP berfungsi?
Jawaban:
Pertanyaan ini telah diajukan di forum AWS dan jawabannya adalah mengatur vhost default yang menangani lalu lintas pada alamat IP telanjang dan tidak melakukan pengalihan. Ini berarti bahwa pengguna normal yang menekan alamat IP Anda tidak akan dialihkan.
Anda juga dapat menentukan bagian jalur dari URL yang Anda inginkan ELB untuk meminta dan mengabaikan jalur itu dengan menambahkan RewriteCond lain:
Pengguna normal yang menekan URL itu tidak akan diarahkan.
Anda juga bisa menggunakan teknik yang sama untuk mendeteksi Agen-Pengguna ELB.
Pengguna normal yang memalsukan Agen Pengguna mereka tidak akan dialihkan.
Atau alamat IP internal ELB.
Agar opsi ini berfungsi, Anda akan memerlukan
mod_rpaf
(untuk Apache 2.2) ataumod_remoteip
(untuk Apache 2.4) untuk memodifikasiREMOTE_ADDR
variabel agar mengandung bagian yang benar dari isiX-Forwarded-For
header. Selama Anda mengaturnya dengan benar, seharusnya tidak mungkin bagi pengguna normal untuk menghindari respons pengalihan.sumber
10.
. Bagian alamat IP lainnya dapat berubah sebanyak yang mereka inginkan dan mereka akan tetap cocok. The10.*.*.*
(atau 10.0.0.0/8) kisaran alamat IP tidak routable melalui internet.Menambahkan host virtual bukanlah ide yang baik, karena kita harus me-restart layanan httpd untuk host virtual agar tercermin. Ada cara alternatif untuk melakukan ini
pisahkan keempat bagian nama dns seperti berikut
elb_dns_name: elb-name.subnet_zone.elb.amazonaws.com
Untuk semua url yang tersisa ada aturan penulisan ulang internal
directory_scructure: code_folder / website
RewriteEngine Pada
RewriteCond% {HTTP_HOST}! $ [NC]
RewriteCond% {REQUEST_URI}! ^ / Index.php $
RewriteRule ^ (. *) $ / $ 1 [L, QSA]
Ini bekerja sangat baik untuk saya. Tolong sarankan jika ada metode yang lebih baik bersorak!
sumber