nginx rewrite实战实例
本部分内容为nginx生产环境中使用的场景示例。
域名跳转(域名重定向)
- 示例1(不带条件的):
- server{
- listen ;
- server_name www.aminglinux.com;
- rewrite /(.*) http://www.aming.com/$1 permanent;
- .......
- }
- 示例2(带条件的):
- server{
- listen ;
- server_name www.aminglinux.com aminglinux.com;
- if ($host != 'www.aminglinux.com')
- {
- rewrite /(.*) http://www.aminglinux.com/$1 permanent;
- }
- .......
- }
- 示例3(http跳转到https):
- server{
- listen ;
- server_name www.aminglinux.com;
- rewrite /(.*) https://www.aminglinux.com/$1 permanent;
- .......
- }
- 示例4(域名访问二级目录)
- server{
- listen ;
- server_name bbs.aminglinux.com;
- rewrite /(.*) http://www.aminglinux.com/bbs/$1 last;
- .......
- }
- 示例5(静态请求分离)
- server{
- listen ;
- server_name www.aminglinux.com;
- location ~* ^.+.(jpg|jpeg|gif|css|png|js)$
- {
- rewrite /(.*) http://img.aminglinux.com/$1 permanent;
- }
- .......
- }
- 或者:
- server{
- listen ;
- server_name www.aminglinux.com;
- if ( $uri ~* 'jpg|jpeg|gif|css|png|js$')
- {
- rewrite /(.*) http://img.aminglinux.com/$1 permanent;
- }
- .......
- }
防盗链:
- 示例6
- server{
- listen ;
- server_name www.aminglinux.com;
- location ~* ^.+.(jpg|jpeg|gif|css|png|js|rar|zip|flv)$
- {
- valid_referers none blocked server_names *.aminglinux.com aminglinux.com *.aming.com aming.com;
- if ($invalid_referer)
- {
- rewrite /(.*) http://img.aminglinux.com/images/forbidden.png;
- }
- }
- .......
- }
- 说明:*这里是通配,跟正则里面的*不是一个意思,none指的是referer不存在的情况(curl -e 测试),
- blocked指的是referer头部的值被防火墙或者代理服务器删除或者伪装的情况,
- 该情况下,referer头部的值不以http://或者https://开头(curl -e 后面跟的referer不以http://或者https://开头)。
- 或者:
- location ~* ^.+.(jpg|jpeg|gif|css|png|js|rar|zip|flv)$
- {
- valid_referers none blocked server_names *.aminglinux.com *.aming.com aminglinux.com aming.com;
- if ($invalid_referer)
- {
- return ;
- }
- }
伪静态:
- 示例7(discuz伪静态):
- location / {
- rewrite ^([^\.]*)/topic-(.+)\.html$ $/portal.php?mod=topic&topic=$ last;
- rewrite ^([^\.]*)/forum-(\w+)-([-]+)\.html$ $/forum.php?mod=forumdisplay&fid=$&page=$ last;
- rewrite ^([^\.]*)/thread-([-]+)-([-]+)-([-]+)\.html$ $/forum.php?mod=viewthread&tid=$&extra=page%3D$&page=$ last;
- rewrite ^([^\.]*)/group-([-]+)-([-]+)\.html$ $/forum.php?mod=group&fid=$&page=$ last;
- rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $/home.php?mod=space&$=$ last;
- rewrite ^([^\.]*)/(fid|tid)-([-]+)\.html$ $/index.php?action=$&value=$ last;
- }
rewrite多个条件的并且:
- 示例8:
- location /{
- set $rule ;
- if ($document_uri !~ '^/abc')
- {
- set $rule "${rule}1";
- }
- if ($http_user_agent ~* 'ie6|firefox')
- {
- set $rule "${rule}2";
- }
- if ($rule = "")
- {
- rewrite /(.*) /abc/$ redirect;
- }
- }
nginx rewrite实战实例的更多相关文章
- nginx rewrite规则实例讲解
一.正则表达式匹配,其中: * ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中:* -f和!-f用来判断是否存在文 ...
- 很不错的NGINX URL重写实例
转自:http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewrite ...
- Nginx Rewrite规则初探(转)
Nginx rewrite(nginx url地址重写)Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Ng ...
- Nginx rewrite(重读)
Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if.rewrite.set.return.break等,其中rewrite是最关键的指令.一个简单的Nginx Re ...
- Nginx Rewrite详解
Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...
- [转帖]Nginx rewrite模块深入浅出详解
Nginx rewrite模块深入浅出详解 https://www.cnblogs.com/beyang/p/7832460.html rewrite模块(ngx_http_rewrite_modul ...
- nginx rewrite 指令
ginx通过ngx_http_rewrite_module模块支持url重写.支持if条件判断,但不支持else. 该模块需要PCRE支持,应在编译nginx时指定PCRE源码目录, nginx安装方 ...
- Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)
一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...
- Nginx rewrite(重写)
Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if.rewrite.set.return.break等,其中rewrite是最关键的指令.一个简单的Nginx Re ...
随机推荐
- java之maven之初识maven
1.maven是一个项目管理工具. 包括项目创建.资源管理.项目运行.项目发布等功能. 2.为什么使用 maven? a. jar 依赖管理(升级.降级)等 b. 项目之间依赖管理 c. 资源文件管理 ...
- dapper.common新增概念object to sql
Dapper.Common About author Email:@qq.com QQ: QQGroup: Config DbContextFactory.AddDataSource(new Data ...
- 用RD,GR,BL三个方法内代码生成一张图片(非原创,我只是完整了代码)
我公开以下图片的源代码,,是ppm格式的,,自己找到能打开的工具.. (非原创,我加工的代码,可直接执行运行输出,缩略图能看到效果) 这是原博客 http://news.cnblogs.com/n/ ...
- Hadoop的伪分布式的安装
查看下载地址:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.4.0-src.tar.gz 解压hadoop-2.6.0-cdh5.4 ...
- 关于c3p0的重连机制(转载)
1)C3P0容错和自动重连与以下配置参数有关: breakAfterAcquireFailure :true表示pool向数据库请求连接失败后标记整个pool为block并close,就算后端数据库恢 ...
- javax.persistence.PersistenceException: Unable to build entity manager factory
javax.persistence.PersistenceException: Unable to build entity manager factory at org.hibernate.jpa. ...
- discuz x3.3后台admin.php防止直接恶意访问
功能说明:admin.php是discuz默认的后台地址,正常情况下可以直接访问,为了防止某些恶意访问的情况,可以修改以下内容进行安全性能提升. 适用版本:Discuz!x1-x3.3 具体实施方案: ...
- table的各种用法
使用 colgroup 和 col 实现响应式表格(table的各种用法):http://coderlt.coding.me/2017/11/20/table-colgroup/
- vue项目中使用vue-layer弹框插件
vue-layer弹框插件 安装 npm i --save vue-layer 引用 import layer from 'vue-layer' Vue.prototype.$layer = lay ...
- eclipse 中的注释 快捷键 多行注释快捷键 单行注释快捷键
Eclipse 中的两种注释方法: (1)多行注释(2)单行注释 一. 多行注释快捷键 1:添加注释Ctrl+Shift+/ : 添加/* */注释 示例:选中代码块后按下快捷键即可 /* fl ...