本部分内容为nginx生产环境中使用的场景示例。

域名跳转(域名重定向)

  1. 示例1(不带条件的):
  2. server{
  3. listen ;
  4. server_name www.aminglinux.com;
  5. rewrite /(.*) http://www.aming.com/$1 permanent;
  6. .......
  7.  
  8. }
  1. 示例2(带条件的):
  2. server{
  3. listen ;
  4. server_name www.aminglinux.com aminglinux.com;
  5. if ($host != 'www.aminglinux.com')
  6. {
  7. rewrite /(.*) http://www.aminglinux.com/$1 permanent;
  8. }
  9. .......
  10. }
  1. 示例3http跳转到https):
  2. server{
  3. listen ;
  4. server_name www.aminglinux.com;
  5. rewrite /(.*) https://www.aminglinux.com/$1 permanent;
  6. .......
  7. }
  1. 示例4(域名访问二级目录)
  2. server{
  3. listen ;
  4. server_name bbs.aminglinux.com;
  5. rewrite /(.*) http://www.aminglinux.com/bbs/$1 last;
  6. .......
  7. }
  1. 示例5(静态请求分离)
  2. server{
  3. listen ;
  4. server_name www.aminglinux.com;
  5. location ~* ^.+.(jpg|jpeg|gif|css|png|js)$
  6. {
  7. rewrite /(.*) http://img.aminglinux.com/$1 permanent;
  8. }
  9. .......
  10. }
  11. 或者:
  12. server{
  13. listen ;
  14. server_name www.aminglinux.com;
  15. if ( $uri ~* 'jpg|jpeg|gif|css|png|js$')
  16. {
  17. rewrite /(.*) http://img.aminglinux.com/$1 permanent;
  18. }
  19. .......
  20. }

防盗链:

  1. 示例6
  2. server{
  3. listen ;
  4. server_name www.aminglinux.com;
  5. location ~* ^.+.(jpg|jpeg|gif|css|png|js|rar|zip|flv)$
  6. {
  7. valid_referers none blocked server_names *.aminglinux.com aminglinux.com *.aming.com aming.com;
  8. if ($invalid_referer)
  9. {
  10. rewrite /(.*) http://img.aminglinux.com/images/forbidden.png;
  11. }
  12. }
  13. .......
  14. }
  15. 说明:*这里是通配,跟正则里面的*不是一个意思,none指的是referer不存在的情况(curl -e 测试),
  16. blocked指的是referer头部的值被防火墙或者代理服务器删除或者伪装的情况,
  17. 该情况下,referer头部的值不以http://或者https://开头(curl -e 后面跟的referer不以http://或者https://开头)。
  18. 或者:
  19. location ~* ^.+.(jpg|jpeg|gif|css|png|js|rar|zip|flv)$
  20. {
  21. valid_referers none blocked server_names *.aminglinux.com *.aming.com aminglinux.com aming.com;
  22. if ($invalid_referer)
  23. {
  24. return ;
  25. }
  26. }

伪静态:

  1. 示例7(discuz伪静态):
  2. location / {
  3. rewrite ^([^\.]*)/topic-(.+)\.html$ $/portal.php?mod=topic&topic=$ last;
  4. rewrite ^([^\.]*)/forum-(\w+)-([-]+)\.html$ $/forum.php?mod=forumdisplay&fid=$&page=$ last;
  5. rewrite ^([^\.]*)/thread-([-]+)-([-]+)-([-]+)\.html$ $/forum.php?mod=viewthread&tid=$&extra=page%3D$&page=$ last;
  6. rewrite ^([^\.]*)/group-([-]+)-([-]+)\.html$ $/forum.php?mod=group&fid=$&page=$ last;
  7. rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $/home.php?mod=space&$=$ last;
  8. rewrite ^([^\.]*)/(fid|tid)-([-]+)\.html$ $/index.php?action=$&value=$ last;
  9. }

rewrite多个条件的并且:

  1. 示例8
  2. location /{
  3. set $rule ;
  4. if ($document_uri !~ '^/abc')
  5. {
  6. set $rule "${rule}1";
  7. }
  8. if ($http_user_agent ~* 'ie6|firefox')
  9. {
  10. set $rule "${rule}2";
  11. }
  12. if ($rule = "")
  13. {
  14. rewrite /(.*) /abc/$ redirect;
  15. }
  16. }

nginx rewrite实战实例的更多相关文章

  1. nginx rewrite规则实例讲解

    一.正则表达式匹配,其中: * ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中:* -f和!-f用来判断是否存在文 ...

  2. 很不错的NGINX URL重写实例

    转自:http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewrite ...

  3. Nginx Rewrite规则初探(转)

    Nginx  rewrite(nginx url地址重写)Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Ng ...

  4. Nginx rewrite(重读)

    Nginx Rewrite规则相关指令  Nginx Rewrite规则相关指令有if.rewrite.set.return.break等,其中rewrite是最关键的指令.一个简单的Nginx Re ...

  5. Nginx Rewrite详解

    Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...

  6. [转帖]Nginx rewrite模块深入浅出详解

    Nginx rewrite模块深入浅出详解 https://www.cnblogs.com/beyang/p/7832460.html rewrite模块(ngx_http_rewrite_modul ...

  7. nginx rewrite 指令

    ginx通过ngx_http_rewrite_module模块支持url重写.支持if条件判断,但不支持else. 该模块需要PCRE支持,应在编译nginx时指定PCRE源码目录, nginx安装方 ...

  8. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  9. Nginx rewrite(重写)

    Nginx Rewrite规则相关指令  Nginx Rewrite规则相关指令有if.rewrite.set.return.break等,其中rewrite是最关键的指令.一个简单的Nginx Re ...

随机推荐

  1. java之maven之初识maven

    1.maven是一个项目管理工具. 包括项目创建.资源管理.项目运行.项目发布等功能. 2.为什么使用 maven? a. jar 依赖管理(升级.降级)等 b. 项目之间依赖管理 c. 资源文件管理 ...

  2. dapper.common新增概念object to sql

    Dapper.Common About author Email:@qq.com QQ: QQGroup: Config DbContextFactory.AddDataSource(new Data ...

  3. 用RD,GR,BL三个方法内代码生成一张图片(非原创,我只是完整了代码)

    我公开以下图片的源代码,,是ppm格式的,,自己找到能打开的工具.. (非原创,我加工的代码,可直接执行运行输出,缩略图能看到效果)  这是原博客 http://news.cnblogs.com/n/ ...

  4. Hadoop的伪分布式的安装

    查看下载地址:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.4.0-src.tar.gz 解压hadoop-2.6.0-cdh5.4 ...

  5. 关于c3p0的重连机制(转载)

    1)C3P0容错和自动重连与以下配置参数有关: breakAfterAcquireFailure :true表示pool向数据库请求连接失败后标记整个pool为block并close,就算后端数据库恢 ...

  6. javax.persistence.PersistenceException: Unable to build entity manager factory

    javax.persistence.PersistenceException: Unable to build entity manager factory at org.hibernate.jpa. ...

  7. discuz x3.3后台admin.php防止直接恶意访问

    功能说明:admin.php是discuz默认的后台地址,正常情况下可以直接访问,为了防止某些恶意访问的情况,可以修改以下内容进行安全性能提升. 适用版本:Discuz!x1-x3.3 具体实施方案: ...

  8. table的各种用法

    使用 colgroup 和 col 实现响应式表格(table的各种用法):http://coderlt.coding.me/2017/11/20/table-colgroup/

  9. vue项目中使用vue-layer弹框插件

    vue-layer弹框插件  安装 npm i --save vue-layer 引用 import layer from 'vue-layer' Vue.prototype.$layer = lay ...

  10. eclipse 中的注释 快捷键 多行注释快捷键 单行注释快捷键

    Eclipse 中的两种注释方法: (1)多行注释(2)单行注释 一. 多行注释快捷键 1:添加注释Ctrl+Shift+/ :    添加/* */注释 示例:选中代码块后按下快捷键即可 /* fl ...