nginx lua设置代理头

sta*_*uti 4 proxy lua nginx

我相信这应该是一个容易找到的问题,但我一生都找不到答案。我正在尝试设置代理标头,并且尝试了以下方法:

location / {
        access_by_lua '
            ngx.header["ZZZZ"] = zzzzz
            proxy_pass http://127.0.0.1:8888;
        ';
Run Code Online (Sandbox Code Playgroud)

或者

location / {
        access_by_lua '
            ngx.proxy_set_header["ZZZZ"] = zzzzz
            proxy_pass http://127.0.0.1:8888;
        ';
Run Code Online (Sandbox Code Playgroud)

设置代理标头的正确方法是什么?

谢谢你

Him*_*hra 7

要设置或清除发送到 proxy_pass 的标头,您可以使用以下命令

要设置标题,请使用

ngx.req.set_header(header_name, value)
Run Code Online (Sandbox Code Playgroud)

要清除标题,请使用

ngx.req.clear_header(header)
Run Code Online (Sandbox Code Playgroud)

要清除所有标头,您可以编写

for header, _ in pairs(ngx.req.get_headers()) do
    ngx.req.clear_header(header)
end
Run Code Online (Sandbox Code Playgroud)

现在要回答您的问题,您可以使用

location / {
        access_by_lua_block {
            ngx.req.set_header("ZZZZ", zzzzz)
        }
        proxy_pass http://127.0.0.1:8888;
}
Run Code Online (Sandbox Code Playgroud)

确保将其写入access_by_lua或rewrite_by_lua。