【问题标题】:get complete url using nginx and lua with openresty使用 nginx 和 lua 和 openresty 获取完整的 url
【发布时间】:2013-11-28 20:04:14
【问题描述】:

如果请求 URL 是

test.com/gifts.
如果我使用
 ngx.var.uri
输出是
/gifts/
预期输出是
test.com/gifts
代码 : 位置/礼物{ try_files $uri @url_change; } 位置@url_change { default_type 文本/html; content_by_lua ' ngx.say(ngx.var.uri) '; }

【问题讨论】:

  • 你可以得到它,ngx.var.request_uri

标签: nginx lua


【解决方案1】:

我不太明白你想要什么,但如果你想要实际的完整 URL,我想你可以使用这个

$http_host$request_uri;

【讨论】:

  • 这远不是一个“完整的 URL”,它将包含方案、用户(如果存在)、密码(如果存在)、主机、端口(如果存在)、路径和查询(如果存在)。
  • 谢谢,你的帮助就像一个魅力,$request_uri 将获得完整的 uri 事件.html
  • ngx.var.scheme.."://".. ngx.var.http_host.. ngx.var.request_uri.."?"..ngx.var.query_string
  • @ahuigo 我得到“尝试连接字段'query_string'(一个零值)”错误
【解决方案2】:

如果有人在寻找原始请求 uri,它就在这里:

ngx.var.request_uri

ngx.var.uri 是 ngx 重写阶段之后的新 uri。

试试看:

ngx.say(ngx.var.request_uri)

【讨论】:

    【解决方案3】:
    ngx.say(ngx.var.host .. '/' .. ngx.var.uri)
    

    【讨论】:

      【解决方案4】:

      您需要的不只是$host 变量,即ngx.var.host

      【讨论】:

      • 你能看看my question吗?
      • @abi1964 的问题已被移动或删除。
      • @JoeMcMahon:很抱歉,它已被删除。感谢您的帮助:)
      【解决方案5】:

      在query_string为nil时生成完整的url,避免报错:

      local full_url = ngx.var.scheme.."://"..ngx.var.http_host..ngx.var.request_uri
      if ngx.var.query_string ~= nil then
        full_url = full_url.."?"..ngx.var.query_string
      end
      ngx.say(full_url)
      

      【讨论】:

        猜你喜欢
        • 2021-03-10
        • 2022-08-04
        • 2015-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-26
        • 2021-06-08
        相关资源
        最近更新 更多