http-dec-req-hdr.lua 988 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. -- 还原 HTTP 请求头
  2. local hasRawUrl = false
  3. local hasRawRefer = false
  4. local hdrs = ngx.req.get_headers()
  5. local refer = hdrs['referer']
  6. local query = refer:sub(refer:find('?', 10, true) + 1)
  7. local param = ngx.decode_args(query)
  8. for k, v in pairs(param) do
  9. if k:sub(1, 2) == '--' then
  10. k = k:sub(3)
  11. if k == 'url' then
  12. ngx.var._url = v
  13. hasRawUrl = true
  14. elseif k == 'ver' then
  15. ngx.var._ver = v
  16. elseif k == 'type' then
  17. ngx.var._type = v
  18. elseif k == 'mode' then
  19. ngx.var._mode = v
  20. elseif k == 'aceh' then
  21. ngx.ctx._acehOld = true
  22. elseif k == 'level' then
  23. ngx.var._level = v
  24. ngx.ctx._level = tonumber(v)
  25. end
  26. else
  27. ngx.req.set_header(k, v)
  28. if k == 'referer' then
  29. hasRawRefer = true
  30. ngx.var._ref = v
  31. end
  32. end
  33. end
  34. if not hasRawRefer then
  35. ngx.req.clear_header('referer')
  36. end
  37. if not hasRawUrl then
  38. -- 删除 URL 的 '/http/' 前缀
  39. ngx.var._url = ngx.var.request_uri:sub(7)
  40. end