ngx.location.capture 是非阻塞的,ngx.location.capture也能夠用來完成http請求,可是它只能請求到相對於當前nginx服務器的路徑,不能使用以前的絕對路徑進行訪問,可是咱們能夠配合nginx upstream實現咱們想要的功能。 在nginx.cong中的http部分添加以下upstream配置 upstream backend { server s.taobao.com; keepalive 100; } 在example.conf配置以下location location ~ /proxy/(.*) { internal; proxy_pass http://backend/$1$is_args$args; } lua 請求能夠這麼寫: local resp = ngx.location.capture("/proxy/search", { method = ngx.HTTP_GET, args = {q = "hello"} }) if not resp then ngx.say("request error :", err) return end ngx.log(ngx.ERR, tostring(resp.status)) --獲取狀態碼 ngx.status = resp.status --獲取響應頭 for k, v in pairs(resp.header) do if k ~= "Transfer-Encoding" and k ~= "Connection" then ngx.header[k] = v end end --響應體 if resp.body then ngx.say(resp.body) end