nginx lua 设置代理头

标签 nginx proxy lua

我相信这应该很容易找到,但对于我的生活,我找不到答案。我正在尝试设置代理 header ,并且尝试了以下方法:

location / {
        access_by_lua '
            ngx.header["ZZZZ"] = zzzzz
            proxy_pass http://127.0.0.1:8888;
        ';

或者
location / {
        access_by_lua '
            ngx.proxy_set_header["ZZZZ"] = zzzzz
            proxy_pass http://127.0.0.1:8888;
        ';

设置代理 header 的正确方法是什么。

谢谢
稳定

最佳答案

要设置或清除发送到 proxy_pass 的 header ,您可以使用以下内容
设置标题,使用

ngx.req.set_header(header_name, value)
要清除标题,请使用
ngx.req.clear_header(header)
要清除所有标题,您可以编写
for header, _ in pairs(ngx.req.get_headers()) do
    ngx.req.clear_header(header)
end
现在回答你的问题,你可以使用
location / {
        access_by_lua_block {
            ngx.req.set_header("ZZZZ", zzzzz)
        }
        proxy_pass http://127.0.0.1:8888;
}
确保写在 access_by_lua 或 rewrite_by_lua 中。

关于nginx lua 设置代理头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660493/

相关文章:

c - 在 C 中重新分配/调整 Lua 5.1 用户数据的大小

php - nginx try_files 下载 php 文件而不是加载它

configuration - Tinyproxy 不转发请求。从 <IP> 获取未经授权的连接

http - Squid 在创建代理服务器时拒绝所有网站

maven - Visual Studio Code 终端无法使用代理

C++模板方法创建对象

nginx - 如何在 Nginx 中重定向单个 URL?

ubuntu - Nginx 非 www 无法在 Ubuntu 16.04 中工作和重定向

django - uwsgi_pass 不转发 SCRIPT_NAME header

c++ - 模板函数包装器