que mdn cookie if-statement cookies nginx http-headers ngx-http-rewrite-module

if statement - mdn - ¿Cómo anular condicionalmente un encabezado en nginx solo si existe una cookie?



set cookie firefox (1)

¿Hay alguna manera de verificar si existe una cookie específica en nginx ?

Por ahora tengo una sección como la siguiente para establecer el encabezado de la cookie:

proxy_set_header x-client-id $cookie_header_x_client_id;

Quiero comprobar si existe esa cookie, luego establecer el encabezado; de lo contrario, no anule el encabezado.

He intentado:

if ($cookie_header_x_client_id) { proxy_set_header x-client-id $cookie_header_x_client_id; }

Pero no funciona y da el siguiente error:

"proxy_set_header" directive is not allowed here in /etc/nginx/sites-enabled/website:45

¿Alguna solución?


Solo hay un número limitado de directivas permitidas dentro de un contexto if en nginx . Esto está relacionado con el hecho de que if es parte del módulo de rewrite ; como tal, dentro de su contexto, solo puede usar las directivas que se describen específicamente en la documentación del módulo.

La forma común en torno a esta "limitación" es construir el estado utilizando variables intermedias, y luego usar directivas como proxy_set_header usando tales variables intermedias:

set $xci $http_x_client_id; if ($cookie_header_x_client_id) { set $xci $cookie_header_x_client_id; } proxy_set_header x-client-id $xci;