Google Compute Engine'de HTTP (S) Yük Dengeleyicisini kullanırken tüm HTTP trafiğini HTTPS'ye yönlendirin


18

2 Global Yönlendirme Kuralları (HTTP ve HTTPS) ile Google Compute Engine'de HTTP / HTTPS Yük Dengeleme ayarladım. Her kural, HTTP protokolüne sahip bir arka uç hizmetine işaret eder.

Tüm isteklerin http://*gitmesini istiyorum https://*.

Yük dengeleyici HTTP üzerinden arka uç hizmetleriyle konuştuğundan, geri göndermek için arka uç hizmetinde nginx alabileceğimi sanmıyorum 301.

Google compute bir düzine küçük tweaks denedim ve hepsi bir dönen Google goute ile sona erer 502.

Eminim bunu daha önce başka biri yapmış. Doğru yönde herhangi bir ipucu veya işaretçi çok takdir edilmektedir.


HTTP'den HTTPS'ye yeniden yönlendirme (SSL kullanarak) şu anda HTTP / HTTPS yük dengeleyicisi tarafından desteklenmemektedir. Yeniden yönlendirmenin web sunucunuzda yapılandırılması gerekir (apache, nginx vb.). Bununla birlikte, lütfen Compute Engine genel sorun izleyicide ( code.google.com/p/google-compute-engine/issues/list ) bunun için bir özellik isteği göndermekten çekinmeyin .
Faizan

Teşekkür ederim; bir sorun açtı: code.google.com/p/google-compute-engine/issues/…
Ryan Leckey

Tamam mükemmel, özellik talebini mühendisliğe yönlendirdim.
Faizan

@Faizan - Bu özelliğin kullanılabilir olacağı bir zaman çizelgesi var mı? Özelliğin talep edilmesinden bu yana yaklaşık 2 yıl geçti. Geçici çözüm tıknazdır.
talonx

Bu istek için yeni bağlantı issuetracker.google.com/issues/35904733 (eskisi hala yönlendiriyor olsa da).
Daniel Compton

Yanıtlar:


19

HTTP / HTTPS yük dengeleyicisini kullanan benzer bir kurulumumuz var ve HTTPS'yi zorlamayı başardık. Doğrudan yük dengeleyiciden mümkün değildir, ancak arka uç servisinizden ayarlayabilirsiniz. Google Cloud yük dengeleyici, X-Forwarded-Proto http üstbilgisini http veya https değeriyle ayarlar. Bu başlığı arka uç hizmetinizde kontrol edin (bizim durumumuz Varnish, ancak bu Nginx'te de yapılabilir) ve değer http ise, 301'i geri gönderirsiniz.


8
Teşekkürler! Gelecek kuşak için: if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }
Ryan Leckey

426301 yerine HTTP yükseltme üstbilgisi kullanmalısınız. Devamını Oku: stackoverflow.com/questions/17873247/…
Vikram Tiwari

3
Vikram'a katılmıyorum, SEO amaçlı bir 301 kullanmalısınız. 4xx aile kodunu döndürürseniz, pagerank'ınız eski http'yi https üzerinden gösteren bağlantılardan akmaz. En azından sitenizde SEO ile ilgileniyorsanız, 301 beklenen koddur.
cyrrill

1
@VikramTiwari, yazı cevabı aslında şöyle diyor: "Bu http: // 'den https: //' ye yükseltme
yapmakla ilgili değil

1

Bu sorunla bugün karşılaştım ve TCP yük dengeleme kullanarak çözmeyi başardım. HTTP / HTTPS'ye özgü yük dengeleyici seçeneklerine ihtiyacınız yoksa, hem 80 hem de 443 numaralı bağlantı noktasına trafik almak için TCP Yük dengeleyicisini (SSL yok) kullanabilirsiniz. 80 numaralı bağlantı noktasından gelen trafik için, 301'i geri gönderebilirsiniz.


1
tcp yük dengeleme noktası 80 için izin verilmez doc > TCP Vekil Yük Dengeleme destekler aşağıdaki bağlantı noktaları: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222
Giovanni Toraldo
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.