nginx rewrite

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;