Nginx Как получить текущий восходящий IP-адрес и порт

Я использую Nginx-Lua framework, на этапе регистрации я хочу, чтобы текущий IP-адрес исходящего запроса содержал порт. В этом руководстве показано upstream_addr чем-то похож, но указывает на все вышестоящие серверы, а не на текущий. Если я хочу получить текущий, что мне делать?


person jsvisa    schedule 31.03.2015    source источник
comment
Что вы имеете в виду под нынешним?   -  person Alexey Ten    schedule 31.03.2015
comment
$upstream_addr возвращает все восходящие адреса, я хочу, чтобы запрос соответствовал восходящему адресу   -  person jsvisa    schedule 31.03.2015
comment
Он содержит несколько адресов, только если к ним подключен nginx (например, потому что первый был недоступен, и nginx должен был подключиться к другому). При нормальной работе обычно используется только один адрес. В любом случае вы можете рассматривать последний как «текущий»   -  person Alexey Ten    schedule 31.03.2015
comment
@AlexeyTen Спасибо за ваш ответ, я хочу последний   -  person jsvisa    schedule 01.04.2015
comment
У вас есть все возможности lua, чтобы получить это.   -  person Alexey Ten    schedule 01.04.2015


Ответы (1)


$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]) -- upstream address you want.
end
person fannheyward    schedule 02.04.2015
comment
Да $upstream_addr вернет все адреса, но мне нужен текущий - person jsvisa; 02.04.2015
comment
Последний всегда является текущим. - person fannheyward; 02.04.2015