Nginx rewrite 规则 与 proxy_pass 实现html
------------------------------------------------------------------------------------------------------
~ 大小写敏感匹配
~* 大小写不敏感匹配
!~ 大小写敏感不匹配
!~* 大小写不敏感不匹配
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-f 检测文件存在
-d 检测目录存在
-e 检测文件,目录或者符号连接存在
-x 检测文件可执行
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
break – 中止rewrite检测,也就是说当含有break flag的rewrite语句被执行时,该语句就是rewrite的最终结果。
last – 中止rewrite检测,可是跟break有本质的不一样,last的语句不必定是最终结果。
redirect – 返回302临时重定向,通常用于重定向到完整的URL(包含http:部分)
permanent – 返回301永久重定向,通常用于重定向到完整的URL(包含http:部分)
------------------------------------------------------------------------------------------------------
一些实际例子
if($http_host = www.qq.com)
{
rewrite (.*) http://www.baidu.com$1 permanent;
}
// 若是请求的url是 www.qq.com 则永久重定向到 www.baidu.comgit
location ^~ /qq/
{
proxy_pass http://www.qq.com/;
}
//若是请求目录为 /qq/ 则代理到 www.qq.com 若是www.qq.com/qq/ 则代理到 www.qq.comurl
location ~ ^/data
{
deny all;
}
// 禁止 data 目录下全部文件的请求代理
if (!-f $request_filename)
{
break;
proxy_pass http://www.qq.com;
}
// 若是请求的文件名不存在 则代理到 www.qq.comhtm
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
// 若是请求的目录存在 则自动增长 / 符号 get
禁止访问 /svn/ git cvs 这几个目录...防止 svn 文件下载··源码泄漏源码
location ~ .*\.(svn|git|cvs)it
{io
deny all;
}