last -- 相当于Apache 里的【L】标记 ,表示完成rewrite;
break -- 本条规则匹配完成后,终止匹配,不再匹配后面的规则;
redirect -- 返回302 临时重定向,浏览器地址栏会显示跳转后的URL地址
permanent -- 返回301重定向,浏览器地址栏会显示跳转后的URL地址
注意:在location 根推荐为last 非根使用为break
实例: 当文件不存在时,转到图片目录
if (!-f $request_filename)
{
rewrite ^/img/(.*)$ /site/image/$1 last;
}
实例: 判断文件和目录 是否存在
if (!-e $request_filename){
rewrite ^/img/(.*)$ /site/image/$1 last;
}
实例:多目录转成参数 http://abc.domian.com/sort/2 => abc.domain.com/index.jsp?act=sort&name=abc&id=2
if ($host ~* (.*)\.domain\.com)
{
set $sub_name $1;
rewrite ^/sort/(.*)/$ /index.php?act=sort&cid=$sub_name&id=$1 permanent ;
}
实例 目录对换 /123456/abc ==> /abc?id=123456
if ($host ~* (.*)\.domain\.com)
{
set $sub_name $1;
rewrite ^/sort/(.*)$ /$1/index.php permanent;
}
实例:如果客户使用firefox浏览器 ,则重定向到/nginx-ie 目录下
if ($http_user_agent ~* Mozilla)
{
rewrite (.*)$ /nginx-mozilla/$1 break;
}
实例: 禁止访问目录
location ~ ^/data {
deny all
break ;
}
实例 某些类型文件的浏览器缓存时间:
location ~ *\.(gif|jpg|jpeg|png|bmp|swf) $
{
expries 30d
}