Mam następujący przykład
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;
}
Teraz, gdy używam następującej linii zwijania
curl --head -H "X_CUSTOM_HEADER: foo" http://domain.com/api/test
Teraz to nie działa .. apache / php na backend nie widzi nagłówka. Jeśli pomijam nginx, to działa
curl --head -H "X_CUSTOM_HEADER: foo" http://web1.domain.com/api/test
nginx
http-headers
Mikrofon
źródło
źródło
Powinieneś używać
proxy_set_header
wszystkich nagłówków, które chcesz przekazać do serwerów zaplecza. Zamiastproxy_pass_header ...
linii:źródło
Powyższe też nie działało dla mnie, więc użyłem
proxy_pass_header
. Zobacz Wiki Nginx o proxy_pass_header tutaj .Jeśli niestandardowy nagłówek zostanie
device_id
dodanyproxy_pass_header device_id;
do bloku proxy.Jeśli używasz niestandardowych nagłówków z podkreśleniem (tak jak ja), upewnij się, że masz to
underscores_in_headers on
w Nginx Config.źródło
Domyślnie nginx przekazuje wszystkie ( proxy_pass_request_headers na; ) nagłówek do serwera zaplecza. Ale jeśli nagłówek żądania (może być nagłówkiem niestandardowym) zawiera znak podkreślenia (_) w nazwie nagłówka, to nginx blokuje te nagłówki.
Aby umożliwić Nginx przekazywanie całego lub niestandardowego żądanego nagłówka do backendu, włącz opcję podkreślenia.
źródło