nginx meneruskan custom header


13

Saya punya contoh berikut

           location / {
                    proxy_read_timeout 2000;
                    proxy_next_upstream error;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Host $http_host;
                    proxy_pass_header X_CUSTOM_HEADER;
                    proxy_redirect off;
                    proxy_max_temp_file_size 0;
                    proxy_pass https://prod;
                    break;
            }

Sekarang ketika saya menggunakan garis ikal berikut

curl --head -H "X_CUSTOM_HEADER: foo" http://domain.com/api/test

Sekarang tidak berfungsi .. apache / php di backend tidak melihat header. Jika saya memotong nginx itu berfungsi

curl --head -H "X_CUSTOM_HEADER: foo" http://web1.domain.com/api/test

Jawaban:



2

Anda harus menggunakan proxy_set_headeruntuk semua header yang ingin Anda teruskan ke server backend. Jadi, bukannya proxy_pass_header ...baris:

proxy_set_header X_CUSTOM_HEADER $http_x_custom_header;

Saya telah mencobanya dan tidak mengatur tajuk dengan benar, Jika saya mengganti $ http_x_custom_header dengan "foo" berfungsi
Mike

Saya tidak yakin mengapa itu tidak berhasil untuk @ Mike tetapi itu berhasil untuk saya. Saya menggunakan X-Forwarded-Proto dengan $ http_x_forwarded_proto.
Tyler Collier

2

Di atas tidak bekerja untuk saya juga jadi saya gunakan proxy_pass_header. Lihat Nginx Wiki tentang proxy_pass_header di sini .

Jika tajuk khusus Anda device_idditambahkan proxy_pass_header device_id;ke blok Proxy Anda.

Jika Anda menggunakan customheaders dengan garis bawah di dalamnya (seperti saya), pastikan untuk memastikan Anda memiliki underscores_in_headers ondi Nginx Config Anda.


Terima kasih banyak ! Saya mencabut rambut saya .... Pos Anda melegakan saya ....
Fahad Ahammed

1

Secara default nginx meneruskan semua ( proxy_pass_request_headers on; ) header ke server backend. Tetapi jika tajuk permintaan Anda (mungkin tajuk khusus) menyertakan garis bawah (_) dalam nama tajuk lalu nginx memblokir tajuk tersebut.

Ex: authenticate_type, cdn_enable.

Untuk mengaktifkan Nginx untuk melewatkan semua atau tajuk yang diminta khusus ke belokan backend pada opsi garis bawah aktif.

underscores_in_headers on;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.