2015-03-31 4 views
1

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

+0

Что вы подразумеваете под текущей? –

+0

$ upstream_addr возвращает все вышерасположенные addrs, я хочу, чтобы запрос соответствовал upstream addr – jsvisa

+0

Он содержит несколько адресов, только если nginx подключен к ним (например, поскольку первый из них был недоступен, а nginx пришлось подключаться к другому). При нормальной работе обычно используется только один адрес. В любом случае, вы могли бы считать последний «текущим» –

ответ

2

$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 
+0

Да '$ upstream_addr' вернет все addrs, но то, что я хочу, является текущим – jsvisa

+2

Последний всегда является текущим. – fannheyward