Nginx配置编写时支持逻辑运算与大小写字母转换的方法

Vera ·
更新时间:2024-11-10
· 597 次阅读

逻辑运算
nginx的配置中不支持if条件的逻辑与&& 逻辑或|| 运算 ,而且不支持if的嵌套语法,否则会报下面的错误:nginx: [emerg] invalid condition。
我们可以用变量的方式来间接实现。
要实现的语句:

if ($arg_unitid = 42012 && $uri ~/thumb/){ echo "www.jb51.net"; }

如果按照这样来配置,就会报nginx: [emerg] invalid condition错误。
可以这么来实现,如下所示:

set $flag 0; if ($uri ~ ^/thumb/[0-9]+_160.jpg$){ set $flag "${flag}1"; } if ($arg_unitid = 42012){ set $flag "${flag}1"; } if ($flag = "011"){ echo "www.jb51.net"; }

nginx实现大小写字母转换(ngx_http_lower_upper_case模块)
各种程序或脚本都有实现大小写字母互转的功能,今天讲讲ngx_http_lower_upper_case,功能很简单,至于可以用在什么环境大家可以根据自己的情况.多一种模块多一种解决方案.本模块将字符串转换为大小写然后赋值给变量. 用句俗话来说"存在即合理",软件存在性总有他存在的道理。
1. 安装nginx模块

--add-module=path/to/circle_gif/directory

具体方法就不再讲述了,可以参考运维生存时间的<如何安装nginx第三方模块>
2.upper/lower 指令
upper
语法:upper $var string
配置段: location
小些转大写
lower
语法:lower $var string
配置段: location
大写转小写
3. nginx配置

location /ttlsa_upper_lower { upper $var1 "Hello,jb51.net"; lower $var2 "HELLO,jb51.net"; echo $var1; echo $var2; }

4. 测试

# curl http://test.jb51.net/ttlsa_upper_lower/ HELLO,jb51.net hello,jb51.net

nginx模块地址:https://github.com/replay/ngx_http_lower_upper_case/archive/master.zip
ngx_http_lower_upper_case地址:https://github.com/replay/ngx_http_lower_upper_case

您可能感兴趣的文章:详解Nginx中的geo模块与利用其配置负载均衡的示例Nginx配置srcache_nginx模块搭配Redis建立缓存系统详解Nginx服务器的nginx-http-footer-filter模块配置详解Nginx服务器中HTTP Headers相关的模块配置使用在Nginx中配置image filter模块来实现动态生成缩略图详解Nginx的核心配置模块中对于请求体的接受流程Nginx服务器中的模块编写及相关内核源码初探使用Lua编写Nginx服务器的认证模块的方法Nginx带宽控制(限速模块使用)php调用nginx的mod_zip模块打包ZIP文件



nginx配置 方法 大小写 字母 逻辑运算 Nginx

需要 登录 后方可回复, 如果你还没有账号请 注册新账号