Maju header permintaan dari nginx proxy server

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?

Larutan

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.

Komentar (4)

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.

Komentar (1)