Zum Inhalt

session: Session-Bibliothek für nginx-module-lua – flexibel und sicher

Installation

Wenn Sie kein RPM-Repository-Abonnement eingerichtet haben, registrieren Sie sich. Danach können Sie mit den folgenden Schritten fortfahren.

CentOS/RHEL 7 oder Amazon Linux 2

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 lua-resty-session

CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-session

Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.

Dieses Dokument beschreibt lua-resty-session v4.2.0, veröffentlicht am 24. August 2026.


lua-resty-session ist eine sichere und flexible Session-Bibliothek für OpenResty.

TL;DR;

  • Sessions sind unveränderlich (jedes Speichern erzeugt eine neue Session) und ohne Sperren (lockless).
  • Session-Daten werden mit AES-256-GCM verschlüsselt, wobei ein Schlüssel verwendet wird, der mit HKDF-SHA256 abgeleitet wird (im FIPS-Modus wird stattdessen PBKDF2 mit SHA-256 verwendet).
  • Die Session hat einen Header fester Größe, der mit HMAC-SHA256 MAC mit einem Schlüssel geschützt ist, der mit HKDF-SHA256 abgeleitet wird (im FIPS-Modus wird stattdessen PBKDF2 mit SHA-256 verwendet).
  • Session-Daten können in einem zustandslosen Cookie oder in verschiedenen Backend-Speichern abgelegt werden.
  • Ein einzelnes Session-Cookie kann mehrere Sessions über verschiedene Zielgruppen (audiences) hinweg verwalten.

Hinweis: Version 4.0.0 war eine Neufassung dieser Bibliothek mit vielen Erkenntnissen aus den vergangenen Jahren. Wenn Sie noch eine ältere Version verwenden, lesen Sie bitte die alte Dokumentation.

Synopsis

worker_processes  1;

events {
  worker_connections 1024;
}

http {
  init_by_lua_block {
    require "resty.session".init({
      remember = true,
      audience = "demo",
      secret   = "RaJKp8UQW1",
      storage  = "cookie",
    })
  }

  server {
    listen       8080;
    server_name  localhost;
    default_type text/html;

    location / {
      content_by_lua_block {
        ngx.say([[
          <html>
          <body>
            <a href=/start>Start the test</a>
          </body>
          </html>
        ]])
      }
    }

    location /start {
      content_by_lua_block {
        local session = require "resty.session".new()
        session:set_subject("OpenResty Fan")
        session:set("quote", "The quick brown fox jumps over the lazy dog")
        local ok, err = session:save()

        ngx.say(string.format([[
          <html>
          <body>
            <p>Session started (%s)</p>
            <p><a href=/started>Check if it really was</a></p>
          </body>
          </html>
        ]], err or "no error"))
      }
    }

    location /started {
      content_by_lua_block {
        local session, err = require "resty.session".start()

        ngx.say(string.format([[
          <html>
          <body>
            <p>Session was started by %s (%s)</p>
            <p><blockquote>%s</blockquote></p>
            <p><a href=/modify>Modify the session</a></p>
          </body>
          </html>
        ]],
          session:get_subject() or "Anonymous",
          err or "no error",
          session:get("quote") or "no quote"
        ))
      }
    }

    location /modify {
      content_by_lua_block {
        local session, err = require "resty.session".start()
        session:set_subject("Lua Fan")
        session:set("quote", "Lorem ipsum dolor sit amet")
        local _, err_save = session:save()

        ngx.say(string.format([[
          <html>
          <body>
            <p>Session was modified (%s)</p>
            <p><a href=/modified>Check if it is modified</a></p>
          </body>
          </html>
        ]], err or err_save or "no error"))
      }
    }

    location /modified {
      content_by_lua_block {
        local session, err = require "resty.session".start()

        ngx.say(string.format([[
          <html>
          <body>
            <p>Session was started by %s (%s)</p>
            <p><blockquote>%s</blockquote></p>
            <p><a href=/destroy>Destroy the session</a></p>
          </body>
          </html>
        ]],
          session:get_subject() or "Anonymous",
          err or "no error",
          session:get("quote")  or "no quote"
        ))
      }
    }

    location /destroy {
      content_by_lua_block {
        local ok, err = require "resty.session".destroy()

        ngx.say(string.format([[
          <html>
          <body>
            <p>Session was destroyed (%s)</p>
            <p><a href=/destroyed>Check that it really was?</a></p>
          </body>
          </html>
        ]], err or "no error"))
      }
    }

    location /destroyed {
      content_by_lua_block {
        local session, err = require "resty.session".open()

        ngx.say(string.format([[
          <html>
          <body>
            <p>Session was really destroyed, you are known as %s (%s)</p>
            <p><a href=/>Start again</a></p>
          </body>
          </html>
        ]],
          session:get_subject() or "Anonymous",
          err or "no error"
        ))
      }
    }
  }
}

Konfiguration

Die Konfiguration kann in die allgemeine Session-Konfiguration und die serverseitige Speicherkonfiguration unterteilt werden.

Hier ist ein Beispiel:

init_by_lua_block {
  require "resty.session".init({
    remember = true,
    store_metadata = true,
    secret = "RaJKp8UQW1",
    secret_fallbacks = {
      "X88FuG1AkY",
      "fxWNymIpbb",
    },
    storage = "postgres",
    postgres = {
      username = "my-service",
      password = "kVgIXCE5Hg",
      database = "sessions",
    },
  })
}

Session-Konfiguration

Die Session-Konfiguration kann an Initialisierung, Konstruktoren und Hilfsfunktionen übergeben werden.

Hier sind die möglichen Session-Konfigurationsoptionen:

Option Standard Beschreibung
secret nil Geheimnis, das für die Schlüsselableitung verwendet wird. Das Geheimnis wird vor der Verwendung mit SHA-256 gehasht. Z. B. "RaJKp8UQW1".
secret_fallbacks nil Array von Geheimnissen, die als alternative Geheimnisse verwendet werden können (bei Schlüsselrotation), z. B. { "6RfrAYYzYq", "MkbTkkyF9C" }.
ikm (zufällig) Initiales Schlüsselmaterial (oder ikm) kann direkt angegeben werden (ohne ein Geheimnis zu verwenden) mit genau 32 Bytes Daten. Z. B. "5ixIW4QVMk0dPtoIhn41Eh1I9enP2060"
ikm_fallbacks nil Array von initialen Schlüsselmaterialien, die als alternative Schlüssel verwendet werden können (bei Schlüsselrotation), z. B. { "QvPtlPKxOKdP5MCu1oI3lOEXIVuDckp7" }.
cookie_prefix nil Cookie-Präfix, verwenden Sie nil, "__Host-" oder "__Secure-".
cookie_name "session" Name des Session-Cookies, z. B. "session".
cookie_path "/" Cookie-Pfad, z. B. "/".
cookie_domain nil Cookie-Domain, z. B. "example.com"
cookie_http_only true Cookie als HTTP-only markieren, verwenden Sie true oder false.
cookie_secure nil Cookie als secure markieren, verwenden Sie nil, true oder false.
cookie_priority nil Cookie-Priorität, verwenden Sie nil, "Low", "Medium" oder "High".
cookie_same_site "Lax" Cookie-Same-Site-Richtlinie, verwenden Sie nil, "Lax", "Strict", "None" oder "Default"
cookie_same_party nil Cookie mit Same-Party-Flag markieren, verwenden Sie nil, true oder false.
cookie_partitioned nil Cookie mit Partitioned-Flag markieren, verwenden Sie nil, true oder false.
remember false Persistente Sessions aktivieren oder deaktivieren, verwenden Sie nil, true oder false.
remember_safety "Medium" Komplexität der Schlüsselableitung für Remember-Cookies, verwenden Sie nil, "None" (schnell), "Low", "Medium", "High" oder "Very High" (langsam).
remember_cookie_name "remember" Name des persistenten Session-Cookies, z. B. "remember".
audience "default" Session-Zielgruppe, z. B. "my-application".
subject nil Session-Subjekt, z. B. "[email protected]".
enforce_same_subject false Wenn auf true gesetzt, müssen Zielgruppen dasselbe Subjekt teilen. Die Bibliothek entfernt beim Speichern Daten von Zielgruppen, die nicht zum Subjekt passen.
stale_ttl 10 Wenn eine Session gespeichert wird, wird eine neue Session erstellt. stale_ttl gibt an, wie lange die alte noch verwendet werden kann, z. B. 10 (in Sekunden).
idling_timeout 900 Der Idling-Timeout gibt an, wie lange die Session inaktiv sein kann, bis sie als ungültig betrachtet wird, z. B. 900 (15 Minuten) (in Sekunden), 0 deaktiviert die Prüfungen und das Berühren (touching).
rolling_timeout 3600 Der Rolling-Timeout gibt an, wie lange die Session verwendet werden kann, bis sie erneuert werden muss, z. B. 3600 (eine Stunde) (in Sekunden), 0 deaktiviert die Prüfungen und das Rollieren.
absolute_timeout 86400 Der Absolute-Timeout begrenzt, wie lange die Session erneuert werden kann, bis eine erneute Authentifizierung erforderlich ist, z. B. 86400 (ein Tag) (in Sekunden), 0 deaktiviert die Prüfungen.
remember_rolling_timeout 604800 Der Remember-Timeout gibt an, wie lange die persistente Session als gültig betrachtet wird, z. B. 604800 (eine Woche) (in Sekunden), 0 deaktiviert die Prüfungen und das Rollieren.
remember_absolute_timeout 2592000 Der Remember-Absolute-Timeout begrenzt, wie lange die persistente Session erneuert werden kann, bis eine erneute Authentifizierung erforderlich ist, z. B. 2592000 (30 Tage) (in Sekunden), 0 deaktiviert die Prüfungen.
hash_storage_key false Ob der Storage-Schlüssel gehasht werden soll oder nicht. Bei gehashtem Storage-Schlüssel ist es unmöglich, Daten serverseitig zu entschlüsseln, ohne auch ein Cookie zu haben. Verwenden Sie nil, true oder false.
hash_subject false Ob das Subjekt gehasht werden soll oder nicht, wenn store_metadata aktiviert ist, z. B. aus Gründen der personenbezogenen Daten (PII).
store_metadata false Ob auch Metadaten von Sessions gespeichert werden sollen, z. B. das Sammeln von Daten über Sessions einer bestimmten Zielgruppe, die zu einem bestimmten Subjekt gehören.
touch_threshold 60 Die Touch-Schwelle steuert, wie häufig oder selten session:refresh das Cookie berührt, z. B. 60 (eine Minute) (in Sekunden)
compression_threshold 1024 Die Komprimierungsschwelle steuert, wann die Daten deflate-komprimiert werden, z. B. 1024 (ein Kilobyte) (in Bytes), 0 deaktiviert die Komprimierung.
bind nil Binden Sie die Session an Daten, die aus der HTTP-Anfrage oder -Verbindung gewonnen werden. Verwenden Sie ip, scheme, user-agent. Z. B. { "scheme", "user-agent" } berechnet den MAC auch unter Verwendung des HTTP-Anfrage-Scheme und des User-Agent-Headers.
request_headers nil Satz von Headern, die an den Upstream gesendet werden sollen. Verwenden Sie id, audience, subject, timeout, idling-timeout, rolling-timeout, absolute-timeout. Z. B. { "id", "timeout" } setzt die Session-Id- und Session-Timeout-Anfrageheader, wenn set_headers aufgerufen wird.
response_headers nil Satz von Headern, die an den Downstream gesendet werden sollen. Verwenden Sie id, audience, subject, timeout, idling-timeout, rolling-timeout, absolute-timeout. Z. B. { "id", "timeout" } setzt die Session-Id- und Session-Timeout-Antwortheader, wenn set_headers aufgerufen wird.
storage nil Der Speicher ist für die Speicherung der Session-Daten verantwortlich. Verwenden Sie nil oder "cookie" (Daten werden im Cookie gespeichert), "dshm", "file", "memcached", "mysql", "postgres", "redis" oder "shm", oder geben Sie einen Namen eines benutzerdefinierten Moduls an ("custom-storage"), oder eine table, die das Session-Speicher-Interface implementiert.
revocation nil Speicher, der für Cookie-Session-Widerrufsdatensätze verwendet wird. Verwenden Sie nil oder false zum Deaktivieren, einen Speichernamen wie "shm", "redis", "mysql" oder "postgres", einen benutzerdefinierten Speichermodulnamen oder eine Speicher-table mit set/get-Methoden.
revocation_fail_mode "open" Verhalten, wenn der Widerrufsspeicher nicht erreichbar ist. Verwenden Sie "open" (als nicht widerrufen behandeln) oder "closed" (Session ablehnen).
dshm nil Konfiguration für den DSHM-Speicher, z. B. { prefix = "sessions" } (siehe unten)
file nil Konfiguration für den Dateispeicher, z. B. { path = "/tmp", suffix = "session" } (siehe unten)
memcached nil Konfiguration für den Memcached-Speicher, z. B. { prefix = "sessions" } (siehe unten)
mysql nil Konfiguration für den MySQL / MariaDB-Speicher, z. B. { database = "sessions" } (siehe unten)
postgres nil Konfiguration für den Postgres-Speicher, z. B. { database = "sessions" } (siehe unten)
redis nil Konfiguration für Redis / Redis Sentinel / Redis Cluster-Speicher, z. B. { prefix = "sessions" } (siehe unten)
shm nil Konfiguration für den Shared-Memory-Speicher, z. B. { zone = "sessions" }
["custom-storage"] nil Konfiguration für benutzerdefinierten Speicher (geladen mit require "custom-storage").

Beim Speichern von Daten im Cookie ist keine zusätzliche Konfiguration erforderlich. Setzen Sie einfach storage auf nil oder "cookie".

Session-Widerruf-Konfiguration

Cookie- (zustandslose) Sessions sind in sich geschlossen: Einmal ausgestellt, bleibt ein Cookie bis zu seinem Ablauf gemäß den konfigurierten Timeouts gültig. Der Widerruf (revocation) fügt eine optionale, speichergestützte Denylist hinzu, sodass zerstörte Sessions sofort abgelehnt werden, ohne auf den Ablauf des Cookies warten zu müssen.

Der Widerruf ist nur verfügbar, wenn die Session-Daten im Cookie gespeichert werden (storage ist nil oder "cookie"). Wählen Sie das Backend explizit mit revocation = "dshm", "file", "memcached", "mysql", "postgres", "redis" oder "shm" aus. Das Backend verwendet seinen normalen Konfigurationsabschnitt und denselben Speicher-set/get-Vertrag, der für Session-Daten verwendet wird. Benutzerdefinierte Speichermodulnamen und vorgefertigte Speichertabellen werden ebenfalls unterstützt. Das Setzen von revocation = false oder das Weglassen deaktiviert den Widerruf.

Bei jedem session:open prüft die Bibliothek, ob die Session-Kennung widerrufen wurde. Bei session:destroy wird die Kennung in den ausgewählten Speicher mit einer TTL geschrieben, die der verbleibenden Session-Lebensdauer entspricht (Rolling- und Absolute-Timeouts). Die Widerrufsmarkierung ist ein leichtgewichtiger Sentinel; es wird keine Session-Nutzlast gespeichert.

Verwenden Sie revocation_fail_mode, um das Verhalten zu steuern, wenn der Speicher nicht verfügbar ist:

  • "open" (Standard): Eine Warnung protokollieren und die Session als nicht widerrufen behandeln. Das Zerstören löscht das Cookie trotzdem, auch wenn das Schreiben des Widerrufs fehlschlägt.
  • "closed": Das Öffnen oder Zerstören der Session ablehnen.

Der Widerruf gilt für session:destroy (und session:logout, wenn es die letzte Zielgruppe zerstört). Er widerruft nicht die vorherige Session-Kennung bei session:save (Session-Rotation) oder teilweisem session:logout (mehrere Zielgruppen). Nach der Rotation oder dem teilweisen Logout bleibt das vorherige Cookie bis zum Ablauf seiner stale_ttl oder seiner Timeouts verwendbar.

Beispiele:

-- Redis-Denylist
require("resty.session").init({
  storage = "cookie",
  revocation = "redis",
  redis = {
    host = "127.0.0.1",
    password = "secret",
    prefix = "sessions",
  },
})

-- Shared-Memory-Denylist
require("resty.session").init({
  storage = "cookie",
  revocation = "shm",
  shm = {
    zone = "sessions",
    prefix = "revocations",
  },
})

-- MySQL-Denylist
require("resty.session").init({
  storage = "cookie",
  revocation = "mysql",
  mysql = {
    host = "127.0.0.1",
    database = "sessions",
    username = "session",
    password = "secret",
  },
})

Das gleiche Muster funktioniert für "dshm", "file", "memcached" und "postgres".

DSHM-Speicher-Konfiguration

Mit dem DSHM-Speicher können Sie die folgenden Einstellungen verwenden (setzen Sie storage auf "dshm"):

Option Standard Beschreibung
prefix nil Das Präfix für die in DSHM gespeicherten Schlüssel.
suffix nil Das Suffix für die in DSHM gespeicherten Schlüssel.
host "127.0.0.1" Der Host, zu dem eine Verbindung hergestellt wird.
port 4321 Der Port, zu dem eine Verbindung hergestellt wird.
connect_timeout nil Steuert den Standard-Timeout-Wert, der in der connect-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
send_timeout nil Steuert den Standard-Timeout-Wert, der in der send-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
read_timeout nil Steuert den Standard-Timeout-Wert, der in der receive-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
keepalive_timeout nil Steuert die maximale Standard-Idle-Zeit der Verbindungen im Verbindungspool.
pool nil Ein benutzerdefinierter Name für den verwendeten Verbindungspool.
pool_size nil Die Größe des Verbindungspools.
backlog nil Eine Warteschlangengröße, die verwendet wird, wenn der Verbindungspool voll ist (konfiguriert mit pool_size).
ssl nil SSL aktivieren.
ssl_verify nil Serverzertifikat verifizieren.
server_name nil Der Servername für die neue TLS-Erweiterung Server Name Indication (SNI).

Bitte lesen Sie ngx-distributed-shm, um die notwendigen Abhängigkeiten zu installieren.

Dateispeicher-Konfiguration

Mit dem Dateispeicher können Sie die folgenden Einstellungen verwenden (setzen Sie storage auf "file"):

Option Standard Beschreibung
prefix nil Dateipräfix für die Session-Datei.
suffix nil Dateisuffix (oder Erweiterung ohne .) für die Session-Datei.
pool nil Name des Thread-Pools, unter dem das Schreiben von Dateien erfolgt (nur unter Linux verfügbar).
path (tmp-Verzeichnis) Pfad (oder Verzeichnis), unter dem Session-Dateien erstellt werden.

Die Implementierung erfordert LuaFileSystem, das Sie mit LuaRocks installieren können:

 luarocks install LuaFileSystem

Memcached-Speicher-Konfiguration

Mit dem Memcached-Speicher können Sie die folgenden Einstellungen verwenden (setzen Sie storage auf "memcached"):

Option Standard Beschreibung
prefix nil Präfix für die in Memcached gespeicherten Schlüssel.
suffix nil Suffix für die in Memcached gespeicherten Schlüssel.
host 127.0.0.1 Der Host, zu dem eine Verbindung hergestellt wird.
port 11211 Der Port, zu dem eine Verbindung hergestellt wird.
socket nil Die Socket-Datei, zu der eine Verbindung hergestellt wird.
connect_timeout nil Steuert den Standard-Timeout-Wert, der in der connect-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
send_timeout nil Steuert den Standard-Timeout-Wert, der in der send-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
read_timeout nil Steuert den Standard-Timeout-Wert, der in der receive-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
keepalive_timeout nil Steuert die maximale Standard-Idle-Zeit der Verbindungen im Verbindungspool.
pool nil Ein benutzerdefinierter Name für den verwendeten Verbindungspool.
pool_size nil Die Größe des Verbindungspools.
backlog nil Eine Warteschlangengröße, die verwendet wird, wenn der Verbindungspool voll ist (konfiguriert mit pool_size).
ssl false SSL aktivieren
ssl_verify nil Serverzertifikat verifizieren
server_name nil Der Servername für die neue TLS-Erweiterung Server Name Indication (SNI).

MySQL / MariaDB-Speicher-Konfiguration

Mit dem MySQL / MariaDB-Speicher können Sie die folgenden Einstellungen verwenden (setzen Sie storage auf "mysql"):

Option Standard Beschreibung
host "127.0.0.1" Der Host, zu dem eine Verbindung hergestellt wird.
port 3306 Der Port, zu dem eine Verbindung hergestellt wird.
socket nil Die Socket-Datei, zu der eine Verbindung hergestellt wird.
username nil Der Datenbank-Benutzername für die Authentifizierung.
password nil Passwort für die Authentifizierung, kann je nach Serverkonfiguration erforderlich sein.
charset "ascii" Der Zeichensatz, der auf der MySQL-Verbindung verwendet wird.
database nil Der Name der Datenbank, zu der eine Verbindung hergestellt wird.
table_name "sessions" Name der Datenbanktabelle, in der Session-Daten gespeichert werden.
table_name_meta "sessions_meta" Name der Datenbank-Metadatentabelle, in der Session-Metadaten gespeichert werden.
max_packet_size 1048576 Die Obergrenze für die Antwortpakete, die vom MySQL-Server gesendet werden (in Bytes).
connect_timeout nil Steuert den Standard-Timeout-Wert, der in der connect-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
send_timeout nil Steuert den Standard-Timeout-Wert, der in der send-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
read_timeout nil Steuert den Standard-Timeout-Wert, der in der receive-Methode des TCP/Unix-Domain-Socket-Objekts verwendet wird.
keepalive_timeout nil Steuert die maximale Standard-Idle-Zeit der Verbindungen im Verbindungspool.
pool nil Ein benutzerdefinierter Name für den verwendeten Verbindungspool.
pool_size nil Die Größe des Verbindungspools.
backlog nil Eine Warteschlangengröße, die verwendet wird, wenn der Verbindungspool voll ist (konfiguriert mit pool_size).
ssl false SSL aktivieren.
ssl_verify nil Serverzertifikat verifizieren.

Sie müssen außerdem die folgenden Tabellen in Ihrer Datenbank erstellen:

--
-- Datenbanktabelle, die Session-Daten speichert.
--
CREATE TABLE IF NOT EXISTS sessions (
  sid  CHAR(43) PRIMARY KEY,
  name VARCHAR(255),
  data MEDIUMTEXT,
  exp  DATETIME,
  INDEX (exp)
) CHARACTER SET ascii;

--
-- Sessions-Metadatentabelle.
--
-- Diese wird nur benötigt, wenn Sie Session-Metadaten speichern möchten.
--
CREATE TABLE IF NOT EXISTS sessions_meta (
  aud VARCHAR(255),
  sub VARCHAR(255),
  sid CHAR(43),
  PRIMARY KEY (aud, sub, sid),
  CONSTRAINT FOREIGN KEY (sid) REFERENCES sessions(sid) ON DELETE CASCADE ON UPDATE CASCADE
) CHARACTER SET ascii;

Postgres-Konfiguration

Mit dem Postgres-Speicher können Sie die folgenden Einstellungen verwenden (setzen Sie storage auf "postgres"):

Option Standard Beschreibung
host "127.0.0.1" Der Host, zu dem eine Verbindung hergestellt wird.
port 5432 Der Port, zu dem eine Verbindung hergestellt wird.
application 5432 Legt den Namen der Verbindung fest, wie er in pg_stat_activity angezeigt wird (Standard: "pgmoon").
username "postgres" Der Datenbank-Benutzername für die Authentifizierung.
password nil Passwort für die Authentifizierung, kann je nach Serverkonfiguration erforderlich sein.
database nil Der Name der Datenbank, zu der eine Verbindung hergestellt wird.
table_name "sessions" Name der Datenbanktabelle, in der Session-Daten gespeichert werden (kann mit database schema präfixiert sein).
table_name_meta "sessions_meta" Name der Datenbank-Metadatentabelle, in der Session-Metadaten gespeichert werden (kann mit database schema präfixiert sein).
connect_timeout nil Steuert den Standard-Timeout-Wert, der in der connect-Methode des