Saya punya server yang mendapatkan lalu lintas dari penghenti beban terminasi SSL - dalam hal ini HTTP sebagai port over 80 dengan http_x_forwarded_proto
= "https"
Saya ingin aturan mod_rewrite yang hanya mengizinkan lalu lintas HTTPS langsung atau lalu lintas HTTPS diteruskan.
Saya punya ini sejauh ini:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:http_x_forwarded_proto} != https
RewriteCond %{HTTP:http_x_forwarded_proto} != HTTPS
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
tapi aku mengerti
RewriteCond: pembatas bendera yang buruk
kesalahan.
Apa yang perlu saya koreksi agar ini berfungsi, dan apakah ini pendekatan terbaik?
apache-2.2
mod-rewrite
Yarin
sumber
sumber
Jika Anda memiliki load balancer yang selalu menggunakan SSL saat berkomunikasi dengan server, Anda harus menghilangkan centang pertama karena itu akan selalu benar. (Jika Anda membongkar SSL di load balancer, baris pertama selalu benar kecuali seseorang mengelola langsung menekan server Anda menggunakan SSL yang dalam kasus ini akan salah dan tidak mencoba untuk mengarahkan ulang karena
X-Forwarded-Proto
akan hilang.)Kode yang saya gunakan karena kami selalu berkomunikasi melalui SSL antara ELB dan server web:
sumber