Vekil SSL de dahil olmak üzere mod_rewrite ile HTTPS'yi zorla


9

Ben bu durumda bir bağlantı noktası ile 80'in üzerinde HTTP geliyor bir SSL sonlandırma yük balancer- bazı trafik alıyor bir sunucu var http_x_forwarded_proto"https" =

Yalnızca doğrudan HTTPS trafiğine veya yönlendirilmiş HTTPS trafiğine izin veren bir mod_rewrite kuralı istiyorum.

Şimdiye kadar bu var:

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]

ama alıyorum

RewriteCond: hatalı bayrak sınırlayıcıları

hata.

Bunu yapabilmek için neyi düzeltmem gerekiyor ve bu en iyi yaklaşım mı?

Yanıtlar:


16

Sorun "! =" Den sonraki boşluktu:

Çalışma sürümü:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Zor ...


SSL yüklendiğinde, HTTPS değişkeninin ayarlanacağından emin değilim. Her neyse benim durumumda bu ilk test olmadan iyi çalıştı.
wurtel

1

Yük dengeleyiciniz varsa, sunucuyla iletişim kurarken her zaman SSL kullanın, her zaman doğru olacağı için ilk denetimi atlamanız gerekir. (Yük dengeleyicisinde SSL'yi yüklüyorsanız, birisi SSL kullanarak sunucunuza doğrudan vurmayı başaramazsa, ilk satır her zaman doğrudur, bu durumda yanlış olur ve X-Forwarded-Protoeksik olacağından yeniden yönlendirmeyi denemez.)

Her zaman ELB ve web sunucusu arasında SSL üzerinden iletişim kurduğumuz için kullanıyorum kod:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.