`[ -f | !-f | -d | !-d | -e | !-e | -x | !-x]`
`-f`:请求的文件存在为true
`!-f`:请求的文件不存在,但该文件的目录存在为true
`-d`:请求的目录存在为true
`!-d`:请求的目录不存在,但该目录的上级目录存在为true
`-e`:当请求的文件或目录存在时true
`!-e`:如果请求的文件和改文件所在路径上的目录都不存在,为true
`-x`:请求的文件可执行,为true
`!-x`:请求的文件不可执行,为true
if (-f $reque_filename){
#文件存在
if (!-f $reque_filename){
#文件不存在
*break*
遇到break就跳出,后面的指令不在执行
if (!-f $reque_filename){
set $id = 1; #有效的指令
break;
limit_rate 10k; #无效的指令
*return*
完成对请求的处理。直接向客户端返回响应状态码。
return code URL ;
return [text];
`code`:返回给客户端的HTTP状态码
`URL`:返回给客户端的URL地址
`text`:返回给客户端的响应体内容,支持变量。
*set*
set $id = 2
!~:与指定正则表达式模式不匹配时返回“真”,
判断
匹配与否时
区分
字符
大小写
;
!~*:与指定正则表达式模式不匹配时返回“真”,
判断
匹配与否时不
区分
字符
大小写
;
2、文件及目录匹配
判断
:
-f, !-f:
判断
指定的路径是否为存在且为文件;
-d, !-d:
判断
指定的路径是
==:等值比较;
~:与指定正则表达式模式匹配时返回“真”,
判断
匹配与否时
区分
字符
大小写
;
~*:与指定正则表达式模式匹配时返回“真”,
判断
匹配与否时不
区分
字符
大小写
;
!~:与指定正则表达式模式不匹配时返回“真”,
判断
匹配与否时
区分
字符
大小写
;
!~*:与指定正则表达式模式不匹配时返回“真”,
判断
匹...
使用正则表达式对变量进行匹配,匹配成功返回true,否则返回false。变量与正则表达式之间使用"~","~*","!~","!~*"来连接。
"~"代表匹配正则表达式过程中
区分
大小写
,
"~*"代表匹配正则表达式过程中不
区分
大小写
"!~"和"!~*"刚好和上面取相反值,如果匹配上返回false,匹配不上返回true
if ($http_user_agent ~ MSIE){
#$http_user_agent的值中是否包含MSIE字符串,如果包含返回true
注意:正则表达..
nginx
的配置中不支持if
条件
的逻辑与&& 逻辑或|| 运算 ,而且不支持if的嵌套语法,否则会报下面的错误:
nginx
: [emerg] invalid condition。
我们可以用变量的方式来间接实现。
要实现的语句:
将Windows下的项目(如:php)迁移到
Linux
下,由于Windows操作系统中,文件名是不
区分
大小写
的;而
Linux
系统是
大小写
敏感,会导致有些网页出现404情况。
那么,怎样
Nginx
实现url请求不
区分
大小写
呢?
下面是安装lua模块的方式。lua-
nginx
-module来自大牛agentzh的开源项目,在
Nginx
中嵌入Lua语言,使之可以支持强大Lua语法。
安装lua
1、下载lua
wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz