-
rewrite 函数是使用 nginx 提供的全局变量或自己设置的变量,结合正则表达式和标志来重写和重定向 URL。
重写只能放在 server{} location{} if{} 中,并且只能处理域名后传递的参数以外的字符串
如果空格(条件)。
条件的语法:
1.“来判断平等性,并用它来进行性格比较。
2.“与常规(表示区分大小写)、不区分大小写匹配。
3.“f -d -e” 来判断它是文件、目录还是存在。
语法:返回码;
停止处理并将指定的状态代码返回给客户端。
if ($request_uri ~ sh )
语法:设置变量值;
定义一个变量并复制它,该值可以是文本、变量或文本变量的混合。
语法:重写正则表达式替换 [flag]。
last :停止处理后续重写指令集,然后重新查找重写指令集上的当前重写 URI。
break:停止处理后续的重写指令集,并且不重新查找。
示例 1:
访问请求:8088 被重定向到。
示例 2:
从表面上看,重写和定位的功能有点相似,都可以实现跳转,主要区别在于重写是改变路径获取同一域名内的资源,而位置是控制访问或反转一种路径,可以代理传递给其他机器。
在许多情况下,重写也写在位置,并按以下顺序执行:
-
Nginx 和 Apache 的区别在于:
轻量级,它也是一个 Web 服务,比 Apache 占用更少的内存和资源。
反并发,Nginx 异步、无阻塞处理请求,而 Apache 是阻塞,Nginx 可以在高并发下保持低资源、低消耗和高性能。
高度模块化设计,写入模块相对简单。
社区活跃,各种高性能模块快速生产。
Apache 相对于 Nginx 的优势:
rewrite,比 nginx 的 rewrite 更强大。
你可以找到的模块太多了,你基本上可以想到一个弹簧类型。
bug较少,nginx中的bug相对较多。
存在是有道理的,一般来说,需要性能的 Web 服务使用 nginx。 如果你不需要性能,只想要稳定性,那么 apache。 后者比前者更好地实现了各种功能模块,例如SSL模块比前者更好,并且有更多的可配置项。
这里需要注意的是,Epoll(或者FreeBSD上的Kqueue)网络IO模型是Nginx处理性能高的根本原因,但并不是所有延迟的情况都是Epoll的成功,如果只有少数文件自己提供静态服务,Apache的Select模型可能比Epoll性能更高。
当然,这只是基于网络IO模型原理的假设,实际应用还需要衡量。
-
正则表达式匹配,其中:
区分大小写匹配。
* 是不区分大小写的匹配项。
和! *区分大小写的不匹配和不区分大小写的不匹配。
2. 文件和目录匹配,其中:
F 和! -f 用于确定文件是否存在。
D和! -d 用于确定目录是否存在。
e 和! -e 用于确定文件或目录是否存在。
x 和! -x 用于确定文件是否可执行。
3. rewrite命令的最后一个参数是标志标记,标志标志被标记:
它相当于 Apache 中的 [l] 标志,意思是重写。
此规则匹配完成后,匹配将终止,后续规则不再匹配。
如果返回 302 临时重定向,浏览器地址将显示 URL 地址。
返回 301 永久重定向,浏览器地址显示重定向的 URL 地址。
使用 last 和 break 重写 URI,浏览器地址栏保持不变。 并且两者略有不同,使用 alias 指令必须用 last 标记; 使用 proxy pass 命令时,需要使用 break 标志。 执行最后一个令牌后,将重新请求重写规则所在的服务器标记,并在规则匹配后中断令牌终止匹配。
例如,如果我们将 Photo 123456 等 URL 重定向到 Path to Photo 12 1234
rewrite "/photo/([0-9])(0-9])(0-9])"/path/to/photo/$1/$1$2/$1$2$ ;
第四,nginxrewrite规则相关指令。
命令环境:server、location、if;
此指令的目的是完成当前规则集,不再处理重写指令。
指令环境:服务器、位置
此指令用于检查是否满足条件,如果满足,则用大括号执行语句。 if 命令不支持嵌套,多个条件 &&&||处理。
如果需要增量备份,请先在另一台机器上架设一个SVN服务器,创建一个空仓库,通过svnsync init命令将该仓库与源仓库关联,然后设置定时的Senru任务执行svnsync sync,定期将最新内容同步到另一台机器。