proxy_redirect - nginx reverse proxy docker




Reenviar encabezados de solicitud desde el servidor proxy nginx (2)

Estoy usando Nginx como proxy para filtrar las solicitudes a mi aplicación. Con la ayuda del "http_geoip_module" estoy creando un encabezado http de código de país, y quiero pasarlo como un encabezado de solicitud usando "headers-more-nginx-module". Este es el bloque de ubicación en la configuración de 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';
}

Pero esto solo establece el encabezado en la respuesta. Intenté usar "more_set_input_headers" en lugar de "more_set_headers", pero el encabezado ni siquiera se pasó a la respuesta.

¿Que me estoy perdiendo aqui?


El problema es que los guiones bajos '_' no son válidos en el atributo del encabezado. Si eliminar el guión bajo no es una opción, puede agregarlo al bloque del servidor:

underscores_in_headers on;

Básicamente se trata de copiar y pegar del comentario de @ kishorer747 en la respuesta de @Fleshgrinder, y la solución es de: https://serverfault.com/questions/586970/nginx-is-not-forwarding-a-header-value-when-using-proxy-pass/586997#586997

Lo agregué aquí ya que en mi caso la aplicación detrás de nginx funcionaba perfectamente, pero tan pronto ngix estaba entre mi aplicación de matraz y el cliente, mi aplicación de matraz ya no veía los encabezados. Pasó bastante tiempo depurando.


Si desea pasar la variable a su proxy backend, debe configurarla con el módulo proxy.

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;
}

Y ahora se pasa al backend proxy.





http-headers