1、语法:location [=|~|~*|^~] /uri/ { … } = 为完全匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配 ^~ 开头表示uri以某个常规字符串开头 首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配, 最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 注意规则匹配到则执行匹配 2、举例 设置缓存 location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ { if (-f $request_filename) { expires 1h; break; } } 禁止访问txt和doc目录 location ~* \.(txt|doc)${ root /data/www/wwwroot; deny all; } 防盗链 location ~* \.(gif|jpg|swf)$ { valid_referers none blocked demo.0377joyous.com 0377joyous.com;#命令语法参考http://nginx.org/cn/docs/http/ngx_http_referer_module.html#valid_referers if ($invalid_referer) { rewrite ^/ http://$host/403.png; } } 3、ReWrite语法 last – 基本上都用这个Flag。 break – 中止Rewirte,不在继续匹配 redirect – 返回临时重定向的HTTP状态302 permanent – 返回永久重定向的HTTP状态301
4、判断全局变量
-f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在目录 -e和!-e用来判断是否存在文件或目录 -x和!-x用来判断文件是否可执行
5、变量说明 eg:http://0377joyous.com/test/test.php $host:域名0377joyous.com $server_port:80 $request_uri:请求地址,http://0377joyous.com/test/test.php $document_uri:文档地址/test/test.php $document_root:文档目录/var/www/html $request_filename:文件路径,/var/www/html/test/test.php
备注: 1)匹配要看先后顺序 2)注意优先级 3)注意变量条件 4)命中跳转(小心死循环)
更多内容点击这里