使用nginx和lua与openresty获取完整的URL

时间:2013-11-15 12:17:59

标签: nginx lua

如果请求网址为

test.com/gifts.
如果我使用的是
 ngx.var.uri
输出
/gifts/
预期产出为
test.com/gifts
代码:

 location /gifts {
                    try_files $uri @url_change;
                }


                location @url_change {
                default_type text/html;
                content_by_lua '

                        ngx.say(ngx.var.uri)
                         ';
                }

5 个答案:

答案 0 :(得分:12)

我真的不明白你想要什么,但如果你想要实际的完整网址,我认为你可以使用这个

$http_host$request_uri;

答案 1 :(得分:6)

如果有人正在寻找原始请求uri ,请点击此处:

ngx.var.request_uri

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

试一试:

ngx.say(ngx.var.request_uri)

答案 2 :(得分:2)

不仅仅是$host变量,即ngx.var.host

答案 3 :(得分:2)

ngx.say(ngx.var.host .. '/' .. ngx.var.uri)

答案 4 :(得分:0)

当 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)