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;