Nginx Rewrite 规则指令
if , rewrite , set break
rewrite ^/xlxz/(.*)\.html /xlxz.php?php=$1 break;
if ( !~f $request_filename )
{
rewrite ^/xlxz_img/(.*)$ /site_php/$host/images/$1 last;
}
1, Nginx Rewrite break 指令
语法 break;
默认值 none;
使用环境 server , location if
范例 :
if ($slow)
{
limit_rate 10k;
break;
}
2, Nginx Rewrite if 指令
语法: if ( condition ) {...}
默认值 : none
使用环境 : server , location;
条件信息
1,变量名,错误的值包括: 空字符串"", 或 任何以0开始的字符串.
2, = 等于 != 不等于
3, ~* ~ 正则表达式
4, ~ 区分大小写字母匹配
5, ~* 不区分大小写字母匹配
6, !~ !~* 和 ~ ~* 相反
7, ~f !~f 文件是否存在
8, ~d !~d 目录是否存在
9, ~e !~e 文件或目录是否存在
10, ~x !~x 文件是否可执行
范例 :
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie_php/$1 break;
}
if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) {
set $id $1;
}
if ($request_method = POST ) {
return 405;
}
if ($slow) {
limit_rate 10k;
}
if ($invalid_referer) {
return 403;
}
if ($args ~ post=140){
rewrite ^ http://www.php-php.com/ permanent;
}
3, Nginx Rewrite return 指令
语法 return code
默认值 none;
使用环境 server, location, if
该指令结束规则的执行并返回状态码给客户端
范例
location ~ .*\.(sh|bash)?$
{
return 403;
}
4, Nginx Rewrite 指令
语法 rewrite regex replacement [ flag ]
默认值 none;
使用环境 server, location, if
范例 :
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
return 403;
location /download/ {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
return 403;
}
rewrite "/photos/([0-9]{2})([0-9]{2})([0-9]{2})" /path/to/photos/$1/$1$2/$1$2$3.png;