Zum Inhalt

ctxdump: Alte ngx.ctx speichern und anwenden, um zu vermeiden, dass sie nach einer internen Umleitung von NGINX zerstört wird

Installation

Wenn Sie das RPM-Repository-Abonnement noch nicht eingerichtet haben, melden Sie sich an. 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-ctxdump

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

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

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

Dieses Dokument beschreibt lua-resty-ctxdump v0.1, das am 07. Januar 2021 veröffentlicht wurde.


location /t1 {
    set $ctx_ref = "";
    content_by_lua_block {
         local ctxdump = require "resty.ctxdump"
         ngx.ctx = {
             Date = "Wed May  3 15:18:04 CST 2017",
             Site = "unknown"
        }
        ngx.var.ctx_ref = ctxdump.stash_ngx_ctx()
        ngx.exec("/t2")
    }
}

location /t2 {
    internal;
    content_by_lua_block {
         local ctxdump = require "resty.ctxdump"
         ngx.ctx = {
             Date = "Wed May  3 15:18:04 CST 2017",
             Site = "unknown"
        }
        ngx.ctx = ctxdump.apply_ngx_ctx(ngx.var.ctx_ref)
        ngx.say("Date: " .. ngx.ctx["Date"] .. " Site: " .. ngx.ctx["Site"])
    }
}

Methoden

stash_ngx_ctx

Syntax: ref = stash_ngx_ctx()
Phase: *init_worker_by_lua*, set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*

Referenz auf ngx.ctx, gibt einen Anker (eine neue Referenz, die von lua-resty-ctxdump verwaltet wird) zurück.

Hinweis: stash_ngx_ctx und apply_ngx_ctx müssen paarweise aufgerufen werden, andernfalls tritt ein Speicherleck auf! Siehe apply_ngx_ctx.

apply_ngx_ctx

Syntax: old_ngx_ctx = apply_ngx_ctx(ref)
Phase: *init_worker_by_lua*, set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*

Holt den alten ngx.ctx mit dem Anker, der von stash_ngx_ctx zurückgegeben wird. Danach wird der Anker nicht mehr verwendet.

Hinweis: stash_ngx_ctx und apply_ngx_ctx müssen paarweise aufgerufen werden, andernfalls tritt ein Speicherleck auf! Siehe stash_ngx_ctx.

Siehe auch

GitHub

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