如何获取当前 upstream 的 IP 和端口:使用变量 $proxy_host 和 $proxy_port。这些变量保存着当前请求的目标 upstream 的 IP 和端口。例如,如果你在 Nginx 配置的 proxy_pass 中配置了一个 upstream,可以使用这些变量来获取当前使用的 IP 和端口。

我正在使用 Nginx-Lua 框架,在日志阶段,我想获取当前请求的上游 IP 包含端口号的信息。在此指南中,upstream_addr 显示了类似的内容,但它指定了所有的上游服务器,而不是当前的上游服务器。如果我要获取当前的上游服务器,我应该怎么办呢?

点赞
用户380774
用户380774

$upstream_addr 将返回上游地址,可能仅有一个或者像这样:192.168.1.1:80,192.168.1.2:80,unix:/tmp/sock。您可以通过逗号将返回值分割:

local addrs = _.split(ngx.var.upstream_addr, ',') -- underscore.lua
if #addrs > 0 then
    ngx.log(ngx.ERR, addrs[#addrs]) -- 您想要的上游地址。
end
2015-04-02 08:38:36