如何在 openresty 中将命令的输出添加为头部?

我正在使用 openresty 设置代理,该代理将执行一个命令,并将输出作为 http header 添加,并将具有原始标头和正文以及新标头的请求传递。我正在运行 openresty / openresty:1.15.8.3-bionic docker image。

以下是我的配置:

                    daemon off;
                    error_log /dev/stdout debug;
                    events {
                      worker_connections  4096;
                    }
                    http {
                        access_log /dev/stdout;
                        server {
                            listen 8080;
                            server_name  localhost;
                            location / {
                                set_by_lua_block $res {
                                     local handle = io.popen('my-command')
                                     local result = handle:read('*a')
                                     handle:close()
                                     return result
                                }
                                proxy_pass http://server_host:server_port;
                                proxy_set_header MyHeader $res;
                            }
                        }
                    }

当我使用此配置运行代理时,我的新标题正确传递到代理服务器。但是,原始请求标头和正文未传递。当我将 proxy_set_header MyHeader $res; 替换为类似于 proxy_set_header MyHeader'some-static-value',原始标头、正文和新标头会传递到代理服务器。我尝试添加 proxy_pass_request_body on;proxy_pass_request_headers on;,但没有效果。

有没有办法实现我想要的效果?

点赞