Saya mengubah pengaturan saya dari
nginx > apache/php
untuk
haproxy > nginx > apache/php
(menggunakan haproxy 1.5-dev18 dengan dukungan ssl yang dikompilasi dalam)
Baik nginx dan haproxy disiapkan dengan benar untuk mengatur header HTTP_X_FORWARDED_PROTO. Namun, ketika nginx mendapatkan traffic ssl dari haproxy, ia melihat koneksi sebagai http dan menetapkan header seperti itu.
Bagaimana saya bisa mengatur nginx untuk meneruskan header HTTP_X_FORWARDED_PROTO jika ada, tetapi jika tidak melanjutkan pengaturannya berdasarkan koneksi?
proxy_set_header
baris sebelum dan sesudah Anda sama.$scheme
vs$thescheme
.default $scheme
kasusnya akan terjadi, pengaturan$thescheme
ke HTTPS meskipun sebenarnya permintaan (ke haproxy) tidak aman HTTP. - Untuk menghindari itu, bagaimana dengandefault $http_x_forwarded_proto; '' $scheme;
:, jadi jika haproxy mengatakan HTTP itu akan dihormati.default $http_x_forwarded_proto;
).Saya memiliki kebutuhan yang sama dengan AWS ELB
Inilah garis pemecahan masalah saya:
sumber
$http_x_forwarded_proto
suatu tempat? Apa itu?proxy_set_header X-Forwarded-Proto $scheme;
, yang tidak berfungsiSaya tidak bisa hanya berkomentar jadi saya memposting ini sebagai jawaban: Bisakah Anda memberi kami sebagian atau seluruh konfigurasi nginx Anda sehingga kami dapat melihat apa yang salah dengannya? Mungkin juga konfigurasi HAProxy Anda?
Masalah pertama yang bisa saya pikirkan adalah bahwa HAProxy Anda melakukan terminasi ssl. Singkatnya, untuk melepaskan server backend Anda, penyeimbang beban dapat dikonfigurasi untuk melakukan semua hal ssl, dan kemudian berkomunikasi dengan server backend Anda dalam HTTP. Suka skema di sini: http://blog.exceliance.fr/2012/09/10/how-to-get-ssl-with-haproxy-getting-rid-of-stunnel-stud-nginx-or-pound/
Untuk memberikan jawaban yang baik untuk pertanyaan Anda, dapatkah Anda memeriksa bahwa Anda tidak memiliki masalah loopback di http <> https config? Mungkin saat itu Anda dapat mengarahkan http ke http, https ke https, dan kemudian memaksa http untuk diarahkan ke https.
Bisakah Anda memeriksa bahwa Anda telah mengaktifkan ssl passthrough di konfigurasi HAProxy Anda?
sumber