I'm menggunakan Nginx sebagai proxy untuk menyaring permintaan untuk aplikasi saya. Dengan bantuan dari "http_geoip_module" aku'm menciptakan sebuah negara kode http-header, dan saya ingin lulus sebagai header permintaan menggunakan "header-lebih-nginx-modul". Ini adalah lokasi block dalam konfigurasi Nginx:
location / {
proxy_pass http://mysite.com;
proxy_set_header Host http://mysite.com;;
proxy_pass_request_headers on;
more_set_headers 'HTTP_Country-Code: $geoip_country_code';
}
Tapi ini hanya menetapkan header di respon. Saya mencoba menggunakan "more_set_input_headers" bukan "more_set_headers" tapi kemudian header isn't bahkan diteruskan ke respon.
Apa yang saya hilang di sini?
Jika anda ingin melewatkan variabel ke proxy backend, anda harus mengaturnya dengan proxy modul.
location / {
proxy_pass http://example.com;
proxy_set_header Host example.com;
proxy_set_header HTTP_Country-Code $geoip_country_code;
proxy_pass_request_headers on;
}
Dan sekarang itu's dilewatkan ke proxy backend.
Masalahnya adalah bahwa '_' garis bawah tidak berlaku di header atribut. Jika menghapus menggarisbawahi bukanlah pilihan yang dapat anda tambahkan ke server block:
underscores_in_headers on;
Ini pada dasarnya adalah sebuah copy dan paste dari @kishorer747 komentar pada @Fleshgrinder jawaban dan solusi dari: https://serverfault.com/questions/586970/nginx-is-not-forwarding-a-header-value-when-using-proxy-pass/586997#586997
Saya menambahkan di sini seperti dalam kasus saya aplikasi di belakang nginx itu bekerja baik-baik saja, tapi setelah ngix antara saya flask aplikasi dan klien, saya flask aplikasi tidak akan melihat header lagi. Itu agak memakan waktu untuk men-debug.