Saya memiliki HTTP / HTTPS Load Balancing yang diatur di Google Compute Engine dengan 2 Aturan Penerusan Global (HTTP dan HTTPS). Setiap aturan menunjuk ke layanan back-end dengan protokol HTTP.
Saya ingin semua permintaan http://*
masuk https://*
.
Ketika load balancer berbicara ke layanan back-end melalui HTTP, saya rasa saya tidak bisa mendapatkan nginx pada layanan back-end untuk mengirim kembali a 301
.
Saya sudah mencoba selusin tweak kecil di google compute dan semuanya berakhir dengan google compute mengembalikan a 502
.
Saya yakin orang lain telah mengatur ini sebelumnya. Setiap tips atau petunjuk ke arah yang benar sangat dihargai.
load-balancing
google-compute-engine
Ryan Leckey
sumber
sumber
Jawaban:
Kami memiliki pengaturan serupa menggunakan penyeimbang beban HTTP / HTTPS dan kami berhasil memaksa HTTPS. Ini tidak mungkin langsung dari penyeimbang beban tetapi Anda dapat mengaturnya dari layanan backend Anda. Penyeimbang beban Google Cloud akan menetapkan header http X-Forwarded-Proto dengan nilai http atau https. Anda memeriksa header ini di layanan backend Anda (dalam kasus kami Varnish tetapi ini juga bisa dilakukan di Nginx) dan jika nilainya http maka Anda mengirim kembali 301.
sumber
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
426
tajuk peningkatan HTTP alih-alih 301. Baca Selengkapnya: stackoverflow.com/questions/17873247/…Saya menghadapi masalah ini hari ini dan dapat menyelesaikannya dengan menggunakan load balancing TCP. Jika Anda tidak memerlukan opsi penyeimbang beban khusus HTTP / HTTPS, mungkin Anda dapat menggunakan penyeimbang Beban TCP (tanpa SSL) untuk menerima lalu lintas ke port 80 dan 443. Untuk lalu lintas dari port 80, Anda dapat mengirim kembali 301.
sumber