Zum Inhalt

request-cookies-filter: Feingranulare Kontrolle über Anfrage-Cookies

Installation

Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:

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

Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:

load_module modules/ngx_http_request_cookies_filter_module.so;

Dieses Dokument beschreibt nginx-module-request-cookies-filter v0.1.0 veröffentlicht am 06. Januar 2026.


Synopsis

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

        location / {
            # Wenn ein Cookie mit dem Namen "a" existiert, setzen Sie es auf 1. Andernfalls fügen Sie ein Cookie mit dem Namen "a" und dem Wert 1 hinzu.
            set_request_cookie a 1;

            # Wenn ein Cookie mit dem Namen "b" existiert, tun Sie nichts. Andernfalls fügen Sie ein Cookie mit dem Namen "a" und dem Wert 1 hinzu.
            add_request_cookie b 2;

            # Wenn ein Cookie mit dem Namen "c" existiert, setzen Sie es auf 3. Andernfalls tun Sie nichts.
            modify_request_cookie c 3;

            # Wenn ein Cookie mit dem Namen "d" existiert, löschen Sie es. Andernfalls tun Sie nichts.
            clear_request_cookie d;

            # Bedingte Filterung. Wirkt sich nur aus, wenn die Variable $http_a nicht leer oder '0' ist.
            set_request_cookie e 4 if=$http_a;

            # Senden Sie die gefilterten Cookies an den Upstream.
            proxy_set_header Cookie $filtered_request_cookies;

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

Direktiven

Syntax: set_request_cookie cookie_name value [if=condition];

Standard:

Kontext: http, server, location

Setzt den Wert eines Cookies. Wenn das Cookie bereits existiert, wird es geändert.

Cookie-Namen sind groß- und kleinschreibungsempfindlich, das gleiche gilt für die folgenden.

Syntax: add_request_cookie cookie_name value [if=condition];

Standard:

Kontext: http, server, location

Fügt ein neues Cookie hinzu. Wenn das Cookie bereits existiert, wird die Operation ignoriert.

Syntax: modify_request_cookie cookie_name value [if=condition];

Standard:

Kontext: http, server, location

Ändert den Wert eines bestehenden Cookies. Wenn das Cookie nicht existiert, wird die Operation ignoriert.

Syntax: clear_request_cookie cookie_name [if=condition];

Standard:

Kontext: http, server, location

Entfernt ein Cookie aus den Anfrage-Headern.

Variablen

$filtered_request_cookies

Ein durch Semikolons getrenntes String von gefilterten Cookies. Enthält den endgültigen Cookie-String nach Anwendung aller Filterregeln. Wenn keine Filterregeln angewendet werden, enthält die Variable den ursprünglichen Cookie-String, wie $http_cookie.

Beispiel:

location / {
    set_request_cookie user "test_user";
    add_request_cookie theme "dark";
    # wird "user=test_user; theme=dark" sein, wenn die Anfrage keine Cookies enthält.
    proxy_set_header Cookie $filtered_request_cookies;
    proxy_pass http://backend;
}

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-request-cookies-filter.