Nginx Rewrite规则初探(转)

Nginx  rewrite(nginx url地址重写)
Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。

通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。 

 

if        指令
规则语法:

[plain] view plain copy

 

  1. if ($http_user_agent ~MSIE){  
  2. rewrite ^(.*)$/msie/$1 break;  
  3.  }  
  4.   
  5. if (!-f$request_filename){  
  6.   rewrite ^/img/(.*)$/site/$host/images/$1 last;  
  7.   }  

rewrite 语法规则:
变量名:
    变量名可以使用"="或"!="运算符
     ~  符号表示区分大小写字母匹配
     ~* 符号表示不区分大小写字母匹配
     !~ 和 !~ 与~  !~ 相反
     -f 和 !-f   用来判断文件是否存在
     -d 和 !-d   用来判断目录是否存在
     -e 和 !-e   用来判断文件或目录是否存在
     -x 和 !-x   用来判断文件是否可以执行
      也支持$1到$9位置参数

return指令
示例:,如果访问的URL以.sh .bash 结尾,返回状态码403

[plain] view plain copy

 

  1. location ~ .*\.(sh|bash)?$  
  2.  {  
  3.   return 403;  
  4.        }       

     

rewrite指令

[plain] view plain copy

 

  1. rewrite指令的最后一项参数为flag标记,支持的flag标记主要有以下几种:  
  2. last :相当于Apache里德(L)标记,表示完成rewrite;  
  3. break;本条规则匹配完成后,终止匹配,不再匹配后面的规则  
  4. redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址  
  5. permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址  
  6. last和break用来实现URL重写,浏览器地址栏URL地址不变  

实例:将访问/b跳转到/bbs目录上去:

[plain] view plain copy

 

  1. location /b   {  
  2.     autoindex  on;  
  3.    alias /usr/local/nginx/html/redhat;         
  4.    rewrite ^/b/?$ /bbs permanent;  
  5.   
  6.    }  
  7.   location /bbs {  
  8.      autoindex on;  
  9.   alias /usr/local/nginx/html/bbs;  
  10.   }  

rewrite规则编写实例
1,将原来要访问/b的目录重写为/bbs
     核心语句:

[plain] view plain copy

 

  1. rewrite ^/b/?$ /bbs permannet;  

2,根据不同的浏览器将得到不同的结果。

[plain] view plain copy

 

  1. if ($http_user_agent ~ Firefox) {  
  2.   rewrite ^(.*)$ /firefox/$1 break;  
  3.   }  
  4.   
  5.   if ($http_user_agent ~ MSIE) {  
  6.     rewrite ^(.*)$ /msie/$1 break;  
  7.    }  
  8.   
  9.  if ($http_user_agent ~ Chrome) {  
  10.       rewrite ^(.*)$ /chrome/$1 break;  
  11.  }   

3.防止盗链:

根据Referer信息防止盗链,代码如下:

[plain] view plain copy

 

  1. location ~*\.(gif|jpg|png|swf|flv)${  
  2. valid_referers none blocked www.cheng.com*.test.com;  
  3. if ($invalid_referer)  
  4.  rewrite ^/(.*) http://www.cheng.com/error.html           
  5.   }  

4.实现域名跳转:

[plain] view plain copy

 

  1. server {  
  2.          listen       80;  
  3.          server_name  cheng.example.com;  
  4.          write ^(.*)$  http://zhang.example.com/$1 permanent;  
  5.          location / {  
  6.              root   html;  
  7.              index  index.html index.htm;  
  8.          } 

 

http://blog.csdn.net/xifeijian/article/details/20955253

时间: 2024-11-05 06:07:33

Nginx Rewrite规则初探(转)的相关文章

nginx rewrite规则怎么配置?

 在url优化过程中,不可避免的涉及到nginx rewrite规则.那么nginx rewrite是如何配置的呢? rewrite可以出现的地方有4个:NGX_HTTP_SRV_CONF,NGX_HTTP_SIF_CONF,NGX_HTTP_LOC_CONF,NGX_HTTP_LIF_CONF.分别对应着: NGX_HTTP_SRV_CONF:配置文件中的server域中的任何地方: NGX_HTTP_SIF_CONF:配置文件中server域中的if配置中: NGX_HTTP_LOC_CON

Nginx Rewrite规则与使用介绍和技巧实例_nginx

一.正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行 三.rewrite指令的最后一项参数为flag标记,flag标记有: 1.last 相当于apache里面的[L]标记,表示rewrite. 2.break本条规则匹配

WordPress缓存插件wp-super-cache的nginx rewrite规则

WordPress的缓冲插件wp-super-cache默认支持apahce的缓冲方式,在生成了静态页面数据后,通过.htaccess的规则直接让apache读取静态文件,完全不经过PHP,可以很大的提高博客的页面性能. 但是Nginx的改写规则就没这么容易让代码来配置了,虽然wp-super-cache的第二种缓存方式就是为这种使用环境设计,但实际上是用了PHP来提供静态数据了,在使用apache benchmark压力的时候,php-cgi依然占很高的CPU占有率. 通过编写nginx的re

WordPress Nginx Rewrite规则详解

发下自用的WordPress Nginx重定向规则,适合非子目录安装: location / {  try_files $uri $uri/ /index.php?$args; } rewrite /wp-admin$ $scheme://$host$uri/ permanent; AMH自带的为: location / {  if (-f $request_filename/index.html){   rewrite (.*) $1/index.html break;  }  if (-f

linux中Nginx Rewrite规则工作笔记

Rewrite是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种流行的服务器技术.它还可以实现限制特定IP访问网站的功能.很多情况下,某个 IP 的访问很容易造成 CPU 100% (比如 某些搜索引擎的固定抓取,别人大量的采集站点),这个时候我们就要利用一些有效的手段封掉对方的 IP,让他无法消耗服务器的资源,封 IP 的方法有很多种,如果你的 Web(Nginx|Apache|other) 服务器安装了 Rewrite 模块的话,也可以试试利用 Rewrite 规则封

Nginx系列教程:rewrite规则使用说明

在网上看到一篇关于nginx rewrite规则的贴子,写得非常不错,里面对于Nginx nginx rewrite规则有着很详细的说明及示例,对于我这样的新手来说,这些资料真的是太有用啦!可以让你少走弯路,更容易的上手与使用nginx rewrite规则. 关于rewrite规则,最重要的还是对于正则表达式的理解,所以大家在看之前应该对正则表达式有一些基础的认识与了解,这样在理解rewrite规则的时候就更容易上手啦! 好了,下面我们来看看原文的内容. 最近在VPS上尝试配置安装一个网站,VP

利用Rewrite规则封掉对方的IP

很多情况下,某个 IP 的访问很容易造成 CPU 100% (比如 某些搜索引擎的固定抓取,别人大量的采集站点),这个时候我们就要利用一些有效的手段封掉对方的 IP,让他无法消耗服务器的资源,封 IP 的方法有很多种,如果你的 Web 服务器安装了 Rewrite 模块的话,也可以试试利用 Rewrite 规则封掉对方的 IP. 1.例如我们把某个特定的 IP 直接重定向到 baidu 首页,在网站根目录的 .htaccess 文件里添加代码: RewriteCond %{REMOTE_ADDR

nginx rewrite怎么写

问题描述 nginx rewrite怎么写 原动态 :域名/index.php?a=index&m=cate&cid=1007 怎么在nginx rewrite规则里面写 让他在浏览器输出 cate_1007.html

destoon利用Rewrite规则设置网站安全_php实例

为增强destoon的安全性,需要进行必要的安全设置,本文以Rewrite规则设置来增加网站安全性为例说明如下: 规则一: 屏蔽非php扩展的动态文件,例如asp.aspx等,可以阻止asp.aspx等后缀的后门程序运行 RewriteRule ^(.*)\.(asp|aspx|asa|asax|dll|jsp|cgi|fcgi|pl)(.*)$ /404.php 规则二: 屏蔽站点file目录php运行权限,站点的file目录默认具有写入权限,当网站出现未知漏洞时,可能会被写入后门程序,阻止p