使用两个变量进行 Proxy_pass

我需要使用两个变量 $ip$port 进行 proxy_pass。这两个变量来自一个 lua 块:

location /test/ {
        default_type 'text/plain';
        set $ip '';
        set $port '';

        content_by_lua_block {
            local ip = '';
            local port = '';

            ...

            ngx.var.ip = ip;
            ngx.var.port = port;
        }
        proxy_set_header X-Forwarded-For $remote_addr;
        rewrite ^/connect/(.*) /$1 break;
        proxy_pass http://$ip:$port;
    }

这样做会导致 500 错误。

但是,如果我不通过 lua 进行测试并在 proxy_pass 中不输入变量,它就可以正常工作:

location /test/ {
        default_type 'text/plain';
        set $ip '';
        set $port '';

        content_by_lua_block {
            local ip = '';
            local port = '';

            ...

            ngx.var.ip = ip;
            ngx.var.port = port;
        }
        proxy_set_header X-Forwarded-For $remote_addr;
        rewrite ^/connect/(.*) /$1 break;
        proxy_pass http://127.0.0.1:8008;
    }
点赞