nginx rewrite 语法

一 定义

Rewrite主要实现url地址重写, 以及地址重定向,就是将用户请求web服

务器的地址重新定向到其他URL的过程。

二 语法格式

reweite fiag 标记
break 中断,结束, 本条规则匹配完成后,重新发出请求,
通过新的uri进行匹配
location内部跳转
last 持续 本条规则匹配完成后,停止匹配,不在匹配后
面的规则
location 内部跳转
redirect 重定向:临时 302 持续的 来回
permanent 重定向:永久 301 持续的 来回

二 简单使用

if常用的条件及格式

条件 取反
= 精确匹配 一模一样 等于 !=
~ 过滤 支持正则 区分大小写 !~
~* 过滤 支持正则 不区分大小写 !~*
-d 判断目录是否存在
-f 判断文件是否存在
-x 判断是否有执行权限
-e 运算符检查文件,目录或符号链接是否存在

--nginx内置变量--

nginx内置变量
$http_user_agent 客户端浏览器
$request_uri 用户请求的uri(包含参数)
$host 用户访问Host内 域名
$remote_addr 用户的ip地地址
$args 只取出请求行里面的参数部分
$http_name name是http请求报文中的内容
$http_host $http_host为何查询不到???
$http_accept_language

2.1 if 判断浏览器类型返回值

  1. #01 书写配置文件
  2. [root@node02 conf.d]# cat if.conf
  3. server {
  4. listen 80;
  5. server_name rewrite.zhangyuzhou.com;
  6. root /code/rewrite;
  7. index index.html;
  8. default_type text/html;
  9. if ( $http_user_agent ~* "spider|bot" ){
  10. return 403 "别来了!!";
  11. }
  12. }
  13. #02 创建站点目录
  14. mkdir -p /code/rewrite
  15. echo 123 >>/code/rewrite/index.html
  16. #03 访问测试
  17. curl -A zhangbingbingbot -H:rewrite.zhangyuzhou.com rewrite.zhangyuzhou.com 10.0.0.102
  18. 别来了!!别来了!!
  19. 解释含义
  20. 如果用户客户端spider或者bot (含包括这两个)访问,则返回403 “别来了”
  21. curl
  22. -A 指定代理 设置Http请求头“User-Agent”的部分
  23. -H 添加一个http header(http请求头);

2.2 set 变量的使用

  1. ##语法
  2. Syntax: set $variable value;
  3. Default:
  4. Context: server, location, if
  5. # 使用方法
  6. set $zhangyuzhou "zhang"; 设置zhangyuzhou变量 = zhangyuzhou
  7. return 200 $zhangyuzhou ; 返回码 200 然后加上$zhangyuzhou变量的内容 "zhang"
  8. #01 需求
  9. 用户请求rewrite.zhangyuzhou.com.cn 用户访问 /code/rewrite/cn/index.html
  10. 用户请求rewrite.zhangyuzhou.com.jp 用户访问 /code/rewrite/jp/index.html
  11. #02 配置文件
  12. [root@node02 conf.d]# cat set.conf
  13. server {
  14. listen 80;
  15. server_name rewrite.zhangyuzhou.com;
  16. root /code/rewrite;
  17. index index.html;
  18. default_type text/html;
  19. if ( $host ~ '\.cn$' ) {
  20. rewrite ^/ http://rewrite.zhangyuzhou.com/cn/;
  21. }
  22. if ( $host ~ '\.jp$' ) {
  23. rewrite ^/ http://rewrite.zhangyuzhou.com/jp/;
  24. }
  25. }
  26. #03 访问测试
  27. [root@node02 conf.d]# curl -H Host:rewrite.zhangyuzhou.com.cn 10.0.0.102 -L
  28. zhangyuzhou cn
  29. [root@node02 conf.d]# curl -H Host:rewrite.zhangyuzhou.com.jp 10.0.0.102 -L
  30. zhangyuzhou j

2.3 return返回功能

  1. #语法:
  2. return code [text]; 状态码 内容(文本 定向新的url)
  3. return 内容(文本 定向新的url)
  4. return code URL;
  5. return URL;
  6. Default:
  7. Context: server, location, if
  8. #01 #需求1:如果用户使用ie浏览器访问rewrite.zhangyuzhou.com则返回值字符串.
  9. #02 书写配置文件
  10. [root@node02 conf.d]# cat return.conf
  11. server {
  12. listen 80;
  13. server_name rewrite.zhangyuzhou.com;
  14. root /code/rewrite;
  15. index index.html;
  16. default_type text/html;
  17. if ($http_user_agent ~* "MSIE") {
  18. return 200 "请更换浏览器 使用edge/chrome/fire...";
  19. }
  20. }
  21. mkdir -p /code/rewrite
  22. echo 1 >/code/rewrite/index.html
  23. [root@node02 conf.d]# curl -A MSIE -Host:rewrite.zhangyuzhou.com rewrite.zhangyuzhou.com 10.0.0.102
  24. 请更换浏览器 使用edge/chrome/fire...请更换浏览器 使用edge/chrome/fire...

2.4 rewrite跳转功能

  • 基础语法
  1. Syntax: rewrite regex replacement [flag];
  2. rewrite 正则 替换成什么 [标记]; # 把regex 替换成replacement 标记[]
  3. sed 's#正则#替换成什么# g'
reweite fiag 标记
break 中断,结束, 本条规则匹配完成后,重新发出请求,
通过新的uri进行匹配
location内部跳转
last 持续 本条规则匹配完成后,停止匹配,不在匹配后
面的规则
location 内部跳转
redirect 重定向:临时 302 持续的 来回
permanent 重定向:永久 301 持续的 来回
  • 多重匹配
  1. #01 匹配
  2. [root@node02 conf.d]# cat url.conf
  3. server {
  4. listen 80;
  5. server_name url.zhangyuzhou.com;
  6. root /code/url;
  7. location / {
  8. rewrite /1.html /2.html ;
  9. rewrite /2.html /3.html ;
  10. }
  11. location /2.html {
  12. rewrite /2.html /4.html ;
  13. }
  14. location /3.html {
  15. rewrite /3.html /a.html ;
  16. }
  17. }
  18. [root@node02 conf.d]# curl url.zhangyuzhou.com/1.html
  19. a.html url
  20. 解释下:匹配 1.html ---2.html ---- 3.html ---a.html
  • break
rewrite 标记
break 跳转完成后,停止匹配其他任何规则,直接返回结果
last 调整完成后,重新使用新的uri,发起请求
  1. #break
  2. break 结束执行,返回结果
  3. #01 配置
  4. [root@node02 conf.d]# cat url.conf
  5. server {
  6. listen 80;
  7. server_name url.zhangyuzhou.com;
  8. root /code/url;
  9. location / {
  10. rewrite /1.html /2.html break ;
  11. rewrite /2.html /3.html ;
  12. }
  13. location /2.html {
  14. rewrite /2.html /4.html ;
  15. }
  16. location /3.html {
  17. rewrite /3.html /a.html ;
  18. }
  19. }
  20. [root@node02 conf.d]# curl url.zhangyuzhou.com/1.html
  21. 2.html url
  • last
  1. #停止处理当前location中的规则, 然后以新的uri在server中进行匹配
  2. [root@node02 conf.d]# cat url.conf
  3. server {
  4. listen 80;
  5. server_name url.zhangyuzhou.com;
  6. root /code/url;
  7. location / {
  8. rewrite /1.html /2.html last ;
  9. rewrite /2.html /3.html ;
  10. }
  11. location /2.html {
  12. rewrite /2.html /4.html ;
  13. }
  14. location /3.html {
  15. rewrite /3.html /a.html ;
  16. }
  17. }
  18. [root@node02 conf.d]# curl url.zhangyuzhou.com/1.html
  19. 4.html url

nginx rewrite 语法的更多相关文章

  1. Nginx Rewrite语法详解

    重写中用到的指令 if  (条件) {}  设定条件,再进行重写 set #设置变量 return #返回状态码  return 403; break #跳出rewrite rewrite #重写 I ...

  2. 【nginx运维基础(6)】Nginx的Rewrite语法详解

    概述 重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读和索引你的网站的能力:而且在你改变了自己的网站结构后,无需要求用户修改他们的书签,无需其他网站修改它们的友情链接:它还可以提高你的网 ...

  3. Nginx教程(四) Location配置与ReWrite语法

    Nginx教程(四) Location配置与ReWrite语法 1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {- } ...

  4. Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解

    文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...

  5. Nginx教程(四) Location配置与ReWrite语法 (转)

    Nginx教程(四) Location配置与ReWrite语法 1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {… } ...

  6. nginx location语法使用说明

    语法规则: location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因 ...

  7. Nginx Location 语法,与简单配置[转]

    一、介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器 ...

  8. nginx——rewrite模块

    1.什么是Nginx的Rewrite规则? Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用PCRE(Perl Compatible Regular Expressio ...

  9. Nginx Rewrite规则初探(转)

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

  10. Nginx Rewrite规则记录

    Rewrite 是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术.它还可以实现限制特定IP访问网站的功能.很多情况下,某个 IP 的访问很容易造成 CPU ...

随机推荐

  1. TienChin 渠道管理-添加渠道

    在我们平时新建一个全新的 Java 类,这个类需要存放的包不存在,可以使用如下的方式进行创建: 含义就是说,将 ChannelVO 这个类放在 vo 这个包当中,如果存在则不创建,存在就将新建的类放入 ...

  2. LyScript 插件实现UPX寻找入口

    LyScript 插件可实现对压缩壳的快速脱壳操作,目前支持两种脱壳方式,一种是运用API接口自己编写脱壳过程,另一种是直接加载现有的脱壳脚本运行脱壳. 插件地址:https://github.com ...

  3. VB6的Office颜色菜单 - 开源研究系列文章

    今天把VB6里面的源码开源了( VB6各类源码开源 - 开源研究系列文章 ),这次把原来VB6里面的一个菜单控件进行介绍,需要的网友请下载安装: 1.看使用截图: 运行时截图: 设计时截图: 2.Of ...

  4. CF351D Jeff and Removing Periods 题解

    题目链接:CF 或者 洛谷 挺有意思的题,一开始看到了 \(start+k\times step\),以为是根号分治方向的题,结果发现这题还给了一个"重排"操作玩玩.所以这题其实算 ...

  5. 任何Bean通过实现ProxyableBeanAccessor接口即可获得动态灵活的获取代理对象或原生对象的能力

    如果一个BEAN类上加了@Transactional,则默认的该类及其子类的公开方法均会开启事务,但有时某些业务场景下某些公开的方法可能并不需要事务,那这种情况该如何做呢? 常规的做法: 针对不同的场 ...

  6. 关于Oracle多租户架构下的每个PDB的dbtime查询

    有客户咨询在19c多租户这样的架构中,除了查询cdb本身外,还想查询具体pdb的负载(DB Time),但是使用之前的脚本发现查询不到,只显示cdb自己的结果,客户写的脚本如下: SELECT i.i ...

  7. python使用pandas库读写excel文件

    操作系统 : Windows 10_x64 Python 版本 : 3.9.2_x64 平时工作中会遇到Excel数据处理的问题,这里简单介绍下怎么使用python的pandas库读写Excel文件. ...

  8. 回顾复习之坐标DP

    定义 坐标型动态规划一般是给定网格.序列,求满足条件的MAX或MIN. 开数组时,dp[i]一般代表以ai结尾的满足条件的子序列,dp[i][j]代表以i.j结尾的满足条件的最优解 例题 数塔 典中典 ...

  9. NC20139 [JLOI2014]松鼠的新家

    题目链接 题目 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树& ...

  10. 【OpenGL ES】立方体手动旋转

    1 前言 ​ 本文主要介绍使用 OpenGL ES 绘制立方体,并实现手动触摸事件控制立方体旋转. ​ 为方便控制触摸旋转,假设旋转轴始终在 xoy 平面上,设 z 轴的方向向量 u = (0, 0, ...