nginx 中的内置变量都可以通过if指令 + 正则表达式
来进行截取,截取之后的结果通过正则表达式的分组来进行引用
比如:从请求中传过来的一个名为 ssl_client_s_dn 的变量,它的值是类似cn=username
这样的
我们想要只留下username ,可以这样:
1 | if ( $ssl_client_s_dn ~ (CN=([\S\s]*)) ){ |
其中 $2
是指获取正则表达式匹配结果的第二个分组(也就是第二个括号中的内容)
再上一个例子,url是http://manhua.tawawa.top/test/a.jpg@!optimze
,我们在保存图片缓存的时候,如果把proxy_cache_key的值设置为$request_uri的话,那么$request_uri的值是/test/a.jpg@!optimze
,但是我们想要的是/test/a.jpg
,这个时候就要对$request_uri进行截取。
1 | location ~ ^/test/.* { |
在NGINX中进行调试的时候,有时候想要看一下变量的值,有两种方法。
1.通过标头发送nginx变量值:add_header X-uri "$uri";
将在浏览器的响应标题中看到:X-uri:/index.php
2.直接返回文本:
1 | location / { |
也可以使用html标签格式:
1 | location / { |
也可以直接返回json文本:
1 | location / { |