我有以下配置,將日志寫到access.log
。開始用LUA進行帶掩碼的頭日志記錄
set $resp_header ""/span>;
header_filter_by_lua_block {
local rh = ngx.resp.get_headers()
for k, v in pairs(rh) do
ngx.var.response_header = ngx.var.response_header ... k."=".v.""
end}。
用帶屏蔽的LUA進行末尾的標題記錄
。這對我的大多數上游回應都很好,但對一個發送相同名稱的重復頭 "Set-Cookie "的回應來說,這兩個頭的字符數都相當長,nginx錯誤日志說。
[error] 3142684#3142684。790582運行header_filter_by_lua失敗: header_filter_by_lua:11: 試圖連接本地'v'(一個表值)
我正在研究所有可能的LUA檔案。如果有任何幫助,我將不勝感激。
作為一個變通方法,我在nginx中強行設定了頭資訊 "Set-Cookie"
。#--- for k, v in pairs(rh) do if k:lower() == ("set-cookie") then v="REDACTED" 結束 #---
謝謝你。
uj5u.com熱心網友回復:
有些頭資訊是允許重復的(Set-Cookie就是其中之一),并且將被get_headers()函式作為一個表格回傳,你的代碼沒有考慮到這一點(因此你得到的錯誤)。
替換 ngx.var.resp_header ... k.."="...v..." "用類似于ngx.var.resp_header ... k..."="...(type(v) == "table" and table.concat(v, ";") or v) ..." "
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316520.html
標籤:
