使用 lua 模块在 nginx 中将 endpath 设为小写

Posted

技术标签:

【中文标题】使用 lua 模块在 nginx 中将 endpath 设为小写【英文标题】:make endpath to lowercase in nginx using lua module 【发布时间】:2021-07-23 16:33:46 【问题描述】:

我想将请求 url 设置为小写,然后再将其设置为代理传递。

这是我的 nginx 文件

location ^~ /admin/(?<endpath>.*)
            
                set_by_lua     ngx.var.endpath string.lower(ngx.var.endpath)
                proxy_pass     http://api.sample.com/api/portal/admin/$endpath$is_args$args;
            

但我收到错误:无效的变量名“ngx.var.endpath”

【问题讨论】:

你在哪里创建了那个变量? @Piglet: 因为我的位置是^~ /admin/(?&lt;endpath&gt;.*) 所以ngx.var 应该有endpath 【参考方案1】:

我不太了解nginx,但是根据docs lua 代码应该是一个字符串。

所以不是

set_by_lua     ngx.var.endpath string.lower(ngx.var.endpath)

试试类似的东西

set_by_lua $endpath 'return string.lower(ngx.var.endpath)'

【讨论】:

以上是关于使用 lua 模块在 nginx 中将 endpath 设为小写的主要内容,如果未能解决你的问题,请参考以下文章

重要Nginx模块之————Lua的Nginx API 常量以及参数介绍 (Lua-Nginx-Module 模块)

Nginx框架之Lua拓展

Nginx 集成 lua 模块扩展功能,以及遇到的一些问题

mac下Nginx+lua模块编译安装

Nginx 安装 Lua 支持

通过lua进行nginx的权限控制