Tengo el siguiente ejemplo
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;
}
Ahora cuando uso la siguiente línea de rizo
curl --head -H "X_CUSTOM_HEADER: foo" http://domain.com/api/test
Ahora eso no funciona ... el apache / php en el backend no ve el encabezado. Si evito nginx funciona
curl --head -H "X_CUSTOM_HEADER: foo" http://web1.domain.com/api/test
nginx
http-headers
Miguel
fuente
fuente
Debe usarlo
proxy_set_header
para todos los encabezados que desee reenviar a los servidores de fondo. Entonces, en lugar deproxy_pass_header ...
línea:fuente
Lo anterior tampoco funcionó para mí, así que solía hacerlo
proxy_pass_header
. Vea el Wiki de Nginx sobre proxy_pass_header aquí .Si su encabezado personalizado se
device_id
agregaproxy_pass_header device_id;
a su bloque Proxy.Si está utilizando encabezados personalizados con un guión bajo (como yo), asegúrese de tenerlo
underscores_in_headers on
en su configuración de Nginx.fuente
Por defecto, el nginx reenvía todos los ( proxy_pass_request_headers on; ) el encabezado al servidor de fondo. Pero si el encabezado de su solicitud (puede ser un encabezado personalizado) incluye un guión bajo (_) en el nombre del encabezado, entonces nginx bloquea esos encabezados.
Para permitir que Nginx pase todo o el encabezado solicitado personalizado al backend, active la opción de subrayado.
fuente