Я использую фреймворк Nginx-Lua
, в фазе журнала, я хочу, чтобы исходный IP-адрес текущего запроса содержал порт. В этом руководстве показано, что upstream_addr что-то похожее, но это вид все восходящие серверы, а не текущие, если я хочу получить текущий, что мне делать?Nginx Как получить текущий upstream ip и порт
1
A
ответ
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
Что вы подразумеваете под текущей? –
$ upstream_addr возвращает все вышерасположенные addrs, я хочу, чтобы запрос соответствовал upstream addr – jsvisa
Он содержит несколько адресов, только если nginx подключен к ним (например, поскольку первый из них был недоступен, а nginx пришлось подключаться к другому). При нормальной работе обычно используется только один адрес. В любом случае, вы могли бы считать последний «текущим» –