美文网首页
lua脚本中获取nginx重定向后地址问题

lua脚本中获取nginx重定向后地址问题

作者: holyABCD | 来源:发表于2018-04-26 11:40 被阅读0次

问题描述

原配置

server{
  listen 80;
  rewrite /test/(.*) /dev/$1 last;
  location ^~/dev{
         access_by_lua_file '/opt/lua/bin/ap.lua';
         proxy_pass  http://192.168.143.28:80;
}
  • 期望实现内容:把请求过来的 /test 替换成 /dev ,并路由到下发拦截location,通过ap.lua脚本把替换后的url请求到一个代理服务,代理服务进行一些过滤后转发后下方 proxy_pass.
  • 实际结果:把请求过来的 /test 替换成 /dev ,并路由到下发拦截location,可是通过ap.lua 中的ngx.var.request_uri 取到的还是原来的/test

排查步骤

1.查看nginx文档:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

图片.png
last:rewrite后重新用更改后的url 匹配下location。与我们已命中 /dev 的现象想吻合。但是命中lua脚本后,ngx.var.request_uri 取到的还是原地址。
2.查看资料: 图片.png
得知应用 ngx.var.uri获取rewrite后的uri,但不懈怠uri中的参数。需自己拼接

更改后脚本

  local rewriteUri = ngx.var.uri

        local httpUri = ngx.var.request_uri
        ngx.log(ngx.INFO, 'ngx.var.request_uri '..rawUri..'\nngx.var.uri:'..rewriteUri)
        local equal_pos,_ = string.find(rawUri,rewriteUri)
        -- rewrite过
        if equal_pos == nil or equal_pos ~= 1 then
                ngx.log(ngx.INFO, 'already rewrite!')
                httpUri=rewriteUri
                -- 获取uri中携带的参数
                local params_pos, _ = string.find(rawUri, '?')
                if params_pos ~= nil and params_pos > 0 then
                        local params = string.sub(rawUri,params_pos)
                        httpUri = rewriteUri..params
                end
        end

        ngx.log(ngx.INFO, 'httpUri '..httpUri)

查看资料:
https://www.cnblogs.com/mikeluwen/p/7116967.html
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

相关文章

  • lua脚本中获取nginx重定向后地址问题

    问题描述 原配置 期望实现内容:把请求过来的 /test 替换成 /dev ,并路由到下发拦截location,通...

  • Prometheus监控Nginx

    环境 系统:CentOS 7.5 准备 Nginx添加Lua扩展 Nginx端 下载lua脚本地址:https:/...

  • OpenResty访问DNS服务器获取ip并发送HTTP请求

    需求 项目需要在nginx的lua脚本中,访问nacos来获取redis的配置。记录一下过程。 ngx_lua模块...

  • [深] nginx与lua的开发(28)

    获取全套nginx教程,请访问瓦力博客 lua是一个简洁、轻量、可扩展的脚本语言。nginx+lua开发充分的结合...

  • Windows环境下Nginx+Lua+Redis实现灰度发布

    Windows环境下Nginx+Lua+Redis实现灰度发布 1.配置nginx.conf文件 2.lua脚本 ...

  • NGINX和LUA

    Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码...

  • Ngxin与lua(十一)

    Lua lua是一个简洁,轻量,可扩展的脚本语言.nginx与lua的优势:充分的结合Nginx的并发处理epol...

  • Lua 脚本解密

    教程: 一个Lua脚本的解密过程 lua脚本的加密和解密(GG游戏脚本) 下载地址: unluac_2015_06...

  • Lua与C交互简介

    Lua资源获取### Lua各个平台动态库与静态库下载地址Lua源码下载地址 交互原理#### 要理解Lua与C的...

  • 2018-12-03

    实时统计nginx状态的lua拓展ngx_lua_reqstatus 项目地址:https://github.co...

网友评论

      本文标题:lua脚本中获取nginx重定向后地址问题

      本文链接:https://www.haomeiwen.com/subject/zlpylftx.html