location ~*\.(css|js|html)$ { root resources; #指向静态资源 index index.html #配置缓存有效天数 expires 7d; } location ~\*.(jpg|png|mp3|mp4)$ { root resources; index index.html #有效天数 expires 20d; }location基本语法:
location[ = | ~ | ~* | ^~] url{ }
rewrite 正则表达式 定向后的位置 [模式]
例子:
location /ecshop { index index.php; rewrite goods-([\d]+)\.html$ /ecshop/goods.php?id=$1; rewrite category-(\d+)-b(\d+)\.html /ecshop/category.php?id=$1&brand=$2 permanent; }
server { listen 80; server_name abc.com www.abc.com; if ( $host != 'www.abc.com' ) { rewrite ^/(.*) http://www.abc.com/$1 permanent; } location / { root /data/www/www; index index.html index.htm; } }
注意:用url重写时, 正则里如果有”{}”,正则要用双引号包起来。
模式:last | 本条规则匹配完成后继续向下匹配新的location URI规则 |
break | 本条规则匹配完成后终止,不在匹配任何规则 |
redirect | 返回302临时重定向 |
permanent | 返回301永久重定向 |
重写中用到的指令:
语法格式 if 空格 (条件) { 重写模式 } 1: “=”来判断相等, 用于字符串比较 2: “~” 用正则来匹配(此处的正则区分大小写) ~* 不区分大小写的正则 3: -f -d -e来判断是否为文件,为目录,是否存在. 例子:if (!-e $document_root$fastcgi_script_name) { #注: 此处还要加break rewrite ^.*$ /404.html break; }
if ($http_user_agent ~* msie) { set $isie 1; } if ($fastcgi_script_name = ie.html) { set $isie 0; } if ($isie = 1) { rewrite ^.*$ ie.html; }
if ($remote_addr = 192.168.1.100) { return 403; }
if ($http_user_agent ~ MSIE) { rewrite ^.*$ /ie.htm; #不break会循环重定向 break; }