Saltar a contenido

request-cookies-filter: Control detallado de cookies de solicitud

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-request-cookies-filter
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-request-cookies-filter

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_request_cookies_filter_module.so;

Este documento describe nginx-module-request-cookies-filter v0.1.0 lanzado el 06 de enero de 2026.


Sinopsis

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            # Si existe una cookie llamada "a", se establece en 1. De lo contrario, se añade una cookie llamada "a" con valor 1.
            set_request_cookie a 1;

            # Si existe una cookie llamada "b", no hace nada. De lo contrario, se añade una cookie llamada "a" con valor 1.
            add_request_cookie b 2;

            # Si existe una cookie llamada "c", se establece en 3. De lo contrario, no hace nada.
            modify_request_cookie c 3;

            # Si existe una cookie llamada "d", se elimina. De lo contrario, no hace nada.
            clear_request_cookie d;

            # Filtrado condicional. Solo se aplica si la variable $http_a no está vacía o es '0'.
            set_request_cookie e 4 if=$http_a;

            # Envía las cookies filtradas al upstream.
            proxy_set_header Cookie $filtered_request_cookies;

            proxy_pass http://127.0.0.1:8080;
        }
    }
}

Directivas

Sintaxis: set_request_cookie cookie_name value [if=condition];

Por defecto:

Contexto: http, server, location

Establece el valor de una cookie. Si la cookie ya existe, se modificará.

Los nombres de las cookies son sensibles a mayúsculas y minúsculas, igual que a continuación.

Sintaxis: add_request_cookie cookie_name value [if=condition];

Por defecto:

Contexto: http, server, location

Añade una nueva cookie. Si la cookie ya existe, la operación se ignora.

Sintaxis: modify_request_cookie cookie_name value [if=condition];

Por defecto:

Contexto: http, server, location

Modifica el valor de una cookie existente. Si la cookie no existe, la operación se ignora.

Sintaxis: clear_request_cookie cookie_name [if=condition];

Por defecto:

Contexto: http, server, location

Elimina una cookie de los encabezados de la solicitud.

Variables

$filtered_request_cookies

Una cadena de cookies filtradas separadas por punto y coma. Contiene la cadena de cookies final después de aplicar todas las reglas de filtrado. Si no se aplican reglas de filtrado, la variable contiene la cadena de cookies original, como $http_cookie.

Ejemplo:

location / {
    set_request_cookie user "test_user";
    add_request_cookie theme "dark";
    # será "user=test_user; theme=dark" si la solicitud no contiene ninguna cookie.
    proxy_set_header Cookie $filtered_request_cookies;
    proxy_pass http://backend;
}

GitHub

Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-request-cookies-filter.