Aller au contenu

request-cookies-filter: Contrôle granulaire des cookies de requête

Installation

Vous pouvez installer ce module sur toute distribution basée sur RHEL, y compris, mais sans s'y limiter :

  • RedHat Enterprise Linux 7, 8, 9 et 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 et 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

Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :

load_module modules/ngx_http_request_cookies_filter_module.so;

Ce document décrit nginx-module-request-cookies-filter v0.1.0 publié le 06 janvier 2026.


Synopsis

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

        location / {
            # Si un cookie nommé "a" existe, le définir à 1. Sinon, ajouter un cookie nommé "a" avec la valeur 1.
            set_request_cookie a 1;

            # Si un cookie nommé "b" existe, ne rien faire. Sinon, ajouter un cookie nommé "a" avec la valeur 1.
            add_request_cookie b 2;

            # Si un cookie nommé "c" existe, le définir à 3. Sinon, ne rien faire.
            modify_request_cookie c 3;

            # Si un cookie nommé "d" existe, le supprimer. Sinon, ne rien faire.
            clear_request_cookie d;

            # Filtrage conditionnel. N'affecte que si la variable $http_a n'est pas vide ou '0'.
            set_request_cookie e 4 if=$http_a;

            # Envoyer les cookies filtrés à l'upstream.
            proxy_set_header Cookie $filtered_request_cookies;

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

Directives

Syntaxe : set_request_cookie cookie_name value [if=condition];

Par défaut :

Contexte : http, server, location

Définit la valeur d'un cookie. Si le cookie existe déjà, il sera modifié.

Les noms de cookies sont sensibles à la casse, comme ci-dessous.

Syntaxe : add_request_cookie cookie_name value [if=condition];

Par défaut :

Contexte : http, server, location

Ajoute un nouveau cookie. Si le cookie existe déjà, l'opération est ignorée.

Syntaxe : modify_request_cookie cookie_name value [if=condition];

Par défaut :

Contexte : http, server, location

Modifie la valeur d'un cookie existant. Si le cookie n'existe pas, l'opération est ignorée.

Syntaxe : clear_request_cookie cookie_name [if=condition];

Par défaut :

Contexte : http, server, location

Supprime un cookie des en-têtes de requête.

Variables

$filtered_request_cookies

Une chaîne de cookies filtrés séparée par des points-virgules. Contient la chaîne de cookies finale après application de toutes les règles de filtrage. Si aucune règle de filtrage n'est appliquée, la variable contient la chaîne de cookies d'origine, comme $http_cookie.

Exemple :

location / {
    set_request_cookie user "test_user";
    add_request_cookie theme "dark";
    # sera "user=test_user; theme=dark" si la requête ne contient aucun cookie.
    proxy_set_header Cookie $filtered_request_cookies;
    proxy_pass http://backend;
}

GitHub

Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-request-cookies-filter.