\*\*if判断指令\*\*
语法为`if(condition){...}`,对给定的条件condition进行判断。如果为真,大括号内的rewrite指令将被执行,if条件(conditon)可以是如下任何内容:
\* 当表达式只是一个变量时,如果值为空或任何以0开头的字符串都会当做false
\* 直接比较变量和内容时,使用`=`或`!=`
\* `~`正则表达式匹配,`~\*`不区分大小写的匹配,`!~`区分大小写的不匹配
`-f`和`!-f`用来判断是否存在文件
`-d`和`!-d`用来判断是否存在目录
`-e`和`!-e`用来判断是否存在文件或目录
`-x`和`!-x`用来判断文件是否可执行
例如:
~~~
if ($http\_user\_agent ~ MSIE) {
rewrite ^(.\*)$ /msie/$1 break;
} //如果UA包含"MSIE",rewrite请求到/msid/目录下
if ($http\_cookie ~\* "id=(\[^;\]+)(?:;|$)") {
set $id $1;
} //如果cookie匹配正则,设置变量$id等于正则引用部分
if ($request\_method = POST) {
return 405;
} //如果提交方法为POST,则返回状态405(Method not allowed)。return不能返回301,302
if ($slow) {
limit\_rate 10k;
} //限速,$slow可以通过 set 指令设置
if (!\-f $request\_filename){
break;
proxy\_pass http://127.0.0.1;
} //如果请求的文件名不存在,则反向代理到localhost 。这里的break也是停止rewrite检查
if ($args ~ post=140){
rewrite ^ http://example.com/ permanent;
} //如果query string中包含"post=140",永久重定向到example.com
location ~\* \\.(gif|jpg|png|swf|flv)$ {
valid\_referers none blocked www.jefflei.com www.leizhenfang.com;
if ($invalid\_referer) {
return 404;
} //防盗链
}
~~~
- 简介
- 【入门】并发特性
- 【入门】安装启动
- 【入门】基础必会
- 【基础】正向代理
- 【基础】反向代理
- 【基础】动静分离
- 【基础】负载均衡
- 【基础】HTTP服务器
- 【应用】配置一键生成
- 【应用】乱码处理
- 【应用】开启目录浏览功能
- 【应用】错误码原因和解决方案
- 【应用】location用法
- 【应用】常用正则
- 【应用】rewrite
- 【应用】全局变量
- 【应用】if用法
- 【应用】配置https
- 【应用】PHP-fastcgi
- 【应用】flag标志位
- 【应用】过期功能
- 【应用】gzip压缩
- 【应用】会话保持
- 【应用】worker最大打开文件数
- 【应用】sendfile传输文件
- 【应用】单进程最大连接数
- 【应用】事件驱动
- 【应用】隐藏版本号
- 【应用】网络连接优化
- 【应用】缓存机制
- 【应用】网络限流
- 【应用】日志配置
- 【应用】灰度发布
- 【关于】作者