- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章nginx重写rewrite基础及实例分享由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
nginx rewrite 正则表达式匹配 。
大小写匹配 。
~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 。
文件及目录匹配 。
-f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在目录 -e和!-e用来判断是否存在文件或目录 -x和!-x用来判断文件是否可执行 。
flag标记 。
last 相当于Apache里的[L]标记,表示完成rewrite break 终止匹配, 不再匹配后面的规则。 redirect 返回302临时重定向 地址栏会显示跳转后的地址。 permanent 返回301永久重定向 地址栏会显示跳转后的地址.
logcation的几个使用实例:
1)location / { }:匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。 2)location =/ {}:仅仅匹配/ 3)location ~* \.(gif|jpg|jpeg)$ 。
{ rewrite \.(gif|jpg)$ /logo.png; }:location不区分大小写,匹配任何以gif,jpg,jpeg结尾的文件.
几个实例:
多目录转成参数 要求:abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2 规则配置:
目录对换 要求:/123456/xxxx -> /xxxx?id=123456 规则配置: rewrite ^/(\d+)/(.+)/ /$2?id=$1 last; 再来一个针对浏览器优化的自动rewrite,这里rewrite后的目录可以是存在的; 例如设定nginx在用户使用ie的使用重定向到/nginx-ie目录 规则如下:
。
目录自动加“/” ,这个功能一般浏览器自动完成 。
以下这些可能就跟广义的rewrite重写无关了 。
。
禁止htaccess 。
禁止以/data开头的文件,可以禁止/data/下多级目录下.log.txt等请求 。
禁止单个文件 。
给favicon.ico和robots.txt设置过期时间; 这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志 。
设定某个文件的浏览器缓存过期时间;这里为600秒,并不记录访问日志 。
Nginx还可以自定义某一类型的文件的保质期时间,具体写法看下文的代码:
。
防盗链的设置:
防盗链:如果你的网站是个下载网站,下载步骤应该是先经过你的主页找到下载地址,才能下载,为了防止某些网友直接访问下载地址完全不通过主页下载,我们就可以使用防盗链的方式,具体代码如下:
文件反盗链并设置过期时间--<盗链多次请求也会打开你的站点的图片啊,所以设置下缓存时间,不会每次盗链都请求并下载这张图片> 。
。
说明: 这里的return 417 为自定义的http状态码,默认为403,方便通过nginx的log文件找出正确的盗链的请求地址 “rewrite ^/ http://img.zzvips.com/forbid.gif;”显示一张防盗链图片 “access_log off;”不记录访问日志,减轻压力 “expires 3d”所有文件3天的浏览器缓存 只充许固定ip访问网站,并加上密码;这个对有权限认证的应用比较在行 。
。
说明:location的应用也有各种变化,这里的写法就针对了根目录了。 文件和目录不存在的时重定向 。
域名跳转 。
多域名转向 。
三级域名跳转 。
域名镜向 。
某个子目录作镜向,这里的示例是demo子目录 。
以下在附带本博客的rewrite写法,emlog系统的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_CONF:配置文件中的location域中的任何地方; NGX_HTTP_LIF_CONF:配置文件中的location域中的if配置中; 。
例子:
。
。
其中location的详细描述和location的强大功能可以在本网站搜索框中输入“ngingx location”来搜索。 补充 1,break指令 默认值:none ;使用环境:server,location,if ; 该指令的作用是完成当前的规则集,不再处理rewrite指令。 2,if指令 默认值:none ;使用环境:server,location 该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。If指令不支持嵌套,不支持多个条件&&和||处理.
。
。
3,return指令 。
语法:return code ;使用环境:server,location,if ; 该指令用于结束规则的执行并返回状态码给客户端。 例子,如果访问的URL以".sh"或".bash"结尾,则返回403状态码.
。
。
4,rewrite 指令 语法:rewrite regex replacement flag 默认值:none ; 使用环境:server,location,if 该指令根据表达式来重定向URI,或者修改字符串。指令根据配置文件中的顺序来执行。注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用if语句,示例如下:
。
。
rewrite指令的最后一项参数为flag标记,支持flag标记有:
1.last 相当于apache里面的[L]标记,表示rewrite。 2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。 3.redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址。 4.permanent 返回301永久重定向, 浏览器地址会显示跳转后的URL地址。 使用last和break实现URI重写,浏览器地址栏不变。而且两者有细微差别,使用alias指令必须用last标记;使用proxy_pass指令时,需要使用break标记。 Last标记在本条rewrite规则执行完毕后,会对其所在server{......}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配。 一般在跟location中(location /{...})或直接在server标签中编写rewrite规则,推荐使用last标记;在非根location中(location /cms/{...}),则使用break。 如果URI中含有参数(/app/test.php?id=5),默认情况下参数会被自动附加到替换串上,可以通过在替换串的末尾加上?标记来解决这一问题。 例如:
。
。
例如:如果将类似URL /photo/123456 重定向到 /path/to/photo/12/1234/123456.png 。
。
。
注:如果正则表达式里面有花括号"{"或"}" ,应该使用双引号或单引号。 Linux学习,http:// linux.it.net.cn 5。Set指令 语法:set variable value ; 默认值:none ; 使用环境:server,location,if; 该指令用于定义一个变量,并给变量赋值。变量的值可以为文本、变量以及文本变量的联合。 例子:set $varname "hello world"; 6,Uninitialized_variable_warn指令 语法:uninitialized_variable_warn on|off 使用环境:http,server,location,if 该指令用于开启和关闭未初始化变量的警告信息,默认值为开启。 7,Nginx Rewrite可以用到的全局变量 。
。
。
Nginx的Rewrite规则编写实例 1.当访问的文件和目录不存在时,重定向到某个php文件 。
。
。
2.目录对换 /123456/xxxx ====> /xxxx?id=123456 。
。
。
3.如果客户端使用的是IE浏览器,则重定向到/ie目录下 。
。
。
4.禁止访问多个目录 。
。
。
5.禁止访问以/data开头的文件 。
。
。
6.禁止访问以.sh,.flv,.mp3为文件后缀名的文件 。
。
。
7.设置某些类型文件的浏览器缓存时间 。
。
。
8.给favicon.ico和robots.txt设置过期时间,
这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志 。
。
。
9.设定某个文件的过期时间;这里为600秒,并不记录访问日志 。
。
最后此篇关于nginx重写rewrite基础及实例分享的文章就讲到这里了,如果你想了解更多关于nginx重写rewrite基础及实例分享的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
直接上代码,可以写在公共文件common和继承的基础类中,方便调用 ?
1、php服务端环境搭建 1.php 服务端环境 安装套件 xampp(apach+mysql+php解释器) f:\mydoc文件(重要)\dl_学习\download重要资源\apache
如下所示: Eclipse快捷键 Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
第一步:conn.PHP文件,用于连接数据库并定义接口格式,代码如下: php" id="highlighter_808731">
本篇文章整理了几道Linux下C语言的经典面试题,相信对大家更好的理解Linux下的C语言会有很大的帮助,欢迎大家探讨指正。 1、如果在Linux下使用GCC编译器执行下列程序,输出结果是什么?
安装完最新的Boost库 官方说明中有一句话: Finally, $ ./b2 install will leave Boost binaries in the lib/ subdirecto
为了梳理前面学习的《spring整合mybatis(maven+mysql)一》与《spring整合mybatis(maven+mysql)二》中的内容,准备做一个完整的示例完成一个简单的图书管理功
网站内容质量仅仅是页面综合得分里面的一项.不管算法如何改变调整,搜索引擎都不会丢弃网站页面的综合得分。 一般情况下我们把页面的综合得分为8个点: 1、标题的设置 (标题的设置要有独特性)
最近事情很忙,一个新项目赶着出来,但是很多功能都要重新做,一直在编写代码、debug。今天因为一个新程序要使用fragment来做,虽然以前也使用过fragment,不过没有仔细研究,今天顺道写篇文
Android资源命名规范 最近几个月,大量涉及android资源的相关工作。对于复杂的应用而言,资源命名的规范很有必要。除了开发人员之外,UI设计人员(或者切图相关人员)也需要对资源使用的位置非常
以前一直使用Hibernate,基本上没用过Mybatis,工作中需要做映射关系,简单的了解下Mybatis的映射。 两者相差不多都支持一对一,一对多,多对多,本章简单介绍一对一的使用以及注意点。
如下所示: ? 1
如果想在自定义的View上面显示Button 等View组件需要完成如下任务 1.在自定义View的类中覆盖父类的构造(注意是2个参数的) 复制代码 代码如下: publ
实现功能:实现表格tr拖动,并保存因为拖动改变的等级. jsp代码 ?
代码:测试类 java" id="highlighter_819000"> ?
红黑树是一种二叉平衡查找树,每个结点上有一个存储位来表示结点的颜色,可以是red或black。 红黑树具有以下性质: (1) 每个结点是红色或是黑色 (2) 根结点是黑色的 (3) 如果一个
废话不多说,直接上代码 ? 1
码代码时,有时候需要根据比较大小分别赋值: ? 1
实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天就来总结下Git的相关用法,废话不多说,直接开写。 目的:通过Git管理github托管项目代码 1、下载安装Git 1、下载
直接上代码: 复制代码 代码如下: //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABC
我是一名优秀的程序员,十分优秀!