Я использую Nginx-Lua
framework, на этапе регистрации я хочу, чтобы текущий IP-адрес исходящего запроса содержал порт. В этом руководстве показано upstream_addr чем-то похож, но указывает на все вышестоящие серверы, а не на текущий. Если я хочу получить текущий, что мне делать?
Nginx Как получить текущий восходящий IP-адрес и порт
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
Да
$upstream_addr
вернет все адреса, но мне нужен текущий
- person jsvisa; 02.04.2015
Последний всегда является текущим.
- person fannheyward; 02.04.2015