一:Rewrite

  - 概述

    - flag 作用

      - last / break 实现对 Url 的重写。

      - redirect / permanent 实现对 Url 的重定向。

    - 使用范围

      - server / location / if

  - 语法

    • rewrite    <regex>(正则)    <replacement>(替换内容)     [flag](flag标记);
      正则: perl兼容正则表达式语句进行规则匹配
      替代内容: 将正则匹配的内容替换成replacement
      flag标记: rewrite支持的flag标记 flag标记说明:
        last #本条规则匹配完成后,继续向下匹配新的location URI规则
        break #本条规则匹配完成即终止,不再匹配后面的任何规则
        redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
        permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

  - 实例

    • rewrite ^/(.*) http://192.1568.27.27/$1 permanent;
      regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址
      replacement部分是http://www.czlun.com/$1 $1,是取自regex部分()里的内容。匹配成功后跳转到的URL。
      flag部分 permanent表示永久301重定向标记,即跳转到新的 http://192.1568.27.27/$1 地址上

二:Set

  - 语法

    - set variables value

  -  实例

    • set $varname 'hello';

  - 使用范围

    - server / location / if

三:If

  - 概述

    - 用于检查一个条件是否符合,如果符合,则执行 {} 里面内容

  - 语法

    •  if (condition) {}

        

  - 实例

    • # 变量名比较 ( =相等 / !=不等于 )
      if ($request_uri = '/xxx') {
      return ;
      } # 正则表达式可使用 ~ / ~*
      # !~ / !~* 和上面使用相反
      if ($request_url ~ /x.*) {
      return 404;
      } # 判断文件是否存在 -f(文件存在) / !-f(文件不存在)
      if (!-f $request_filename) {
      return 405;
      } # 判断目录是否存在 -d(目录存在) / !-d(目录不存在) # 判断文件或者目录是否存在 -e(文件或者目录存在) / !-e(文件或者目录不存在) # 判断文件是否可执行 -x(可执行) / !-x(不可执行)

  - 使用范围

    - server / location

四:try_files

  - 概述

    - try_files 将尝试你列出的文件并设置内部文件指向。(更多的用于重定向)

    - try_files最核心的功能是可以替代 Rewrite 使用。

  - 语法

    • try_files file ... uri 或 try_files file ... = code

  - 使用范围

    -  server / location

  - 实例

    • 配置
      try_file $uri /$uri index.php
      过程
      1.当用户请求 http://localhost/example 时,这里的 $uri 就是 /example。
      2.try_files 会到硬盘里尝试找这个文件。如果存在名为 /$root/example(其中 $root 是项目代码安装目录)的文件,就直接把这个文件的内容发送给用户。
      3.显然,目录中没有叫 example 的文件。然后就看 $uri/,增加了一个 /,也就是看有没有名为 /$root/example/ 的目录。
      4.又找不到,就会 fall back 到 try_files 的最后一个选项 /index.php,发起一个内部 “子请求”,也就是相当于 nginx 发起一个 HTTP 请求到 http://localhost/index.php。 配置
      try_files $uri /index.php;
      过程
      1.同上,如果找不到这个文件,则直接跳转到 index.php 处理

  - 注意

    - 按顺序检查文件是否存在,返回第一个找到的文件。如果所有的文件都找不到,会进行一个内部重定向到最后一个参数。

    - 务必确认只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。 最后一个参数是回退URI且必须存在,否则将会出现内部500错误。

    - 命名的location也可以使用在最后一个参数中。与rewrite指令不同,如果回退URI不是命名的location那么$args不会自动保留,如果你想保留$args,必须明确声明。

《Nginx - 指令》- Rewrite/If/Set的更多相关文章

  1. Nginx的Rewrite规则与实例

    通过Rewrite规则可以实现规范的URL.根据变量来做URL转向及选择配置,用好Rewrite有时起到事半功倍的效果. 语法 Nginx的Rewrite相比Apache的要好理解很多,主要使用指令有 ...

  2. Nginx的rewrite应用

    Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Ngi ...

  3. Nginx 指令目录(中文版)

    指令大全 accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_t ...

  4. nginx之rewrite相关功能

    Nginx Rewrite相关功能 Nginx服务器利用ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perl compatible regu ...

  5. Nginx之rewrite四种flag

    利用nginx的rewrite命令,可以实现URL的重写,可在nginx配置文件的server.location.if部分使用,对于rewrite有四种不同的flag. redirect:返回302临 ...

  6. nginx的rewrite

    nginx服务的rewrite nginx后端服务的指令 1)upstream指令 :设置后端服务器组的主要指令 Upstream name {} 2)server指令:用于设定组内的服务器 3)Ip ...

  7. Nginx 实现 Rewrite 跳转

    文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 上一篇文章对Nginx的Location配置进行了讲解,本篇主要对于Nginx中的Rewrite跳转进行讲解. ...

  8. Nginx实现rewrite重写

    目录 Rewrite基本概述 Rewrite标记Flag Rewrite规则实践 Rewrite场景示例 Rewrite规则补充 rewrite优先级实战 Rewrite基本概述 什么是rewrite ...

  9. 04 . Nginx的Rewrite重写

    Rewrite简介 # Rewrite对应URL Rewrite,即URL重写,就是把传入web的请求重定向到其他URL的过程. # 当运维遇到要重写情况时,往往是要程序员把重写规则写好后,发给你,你 ...

  10. nginx 配置rewrite 笔记

    nginx 配置rewrite笔记: 通过下面的示例来说明一下,1. 先说说location : location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样: location ...

随机推荐

  1. 【iCore1S 双核心板_FPGA】例程七:基础逻辑门实验——逻辑门使用

    实验现象: 打开tool-->Netlist viewer-->RTL viewer可观察各个逻辑连接 核心代码: //-----------------Module_logic_gate ...

  2. Android KK 找不到<cutils/properties.h>

    一直通过property来控制android系统的号码匹配位数,之前的项目都工作的好好的,但到了KK时,在sqlite库中引用property的相关方法,却一直编译error... 折腾了好久,发现从 ...

  3. 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击

    第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...

  4. highCharts图表入门简介

    一.Highcharts简介 Highcharts:功能强大.开源.美观.图表丰富.兼容绝大多数浏览器的纯js图表库 Highcharts是一款纯javascript编写的图表库,能够很简单便捷的在W ...

  5. Tomcat启动报Error listenerStart错误 Context [] startup failed due to previous errors

    本文转载自xpenxpen 今天启动Tomcat启动不了,报以下错: org.apache.catalina.core.StandardContext startInternal SEVERE: Er ...

  6. jmeter之结果重定向

    在使用jmeter与jenkins对接时,发现默认打印出来的日志就是正常的summary统计,如果要查看日志,只能通过jmeter.log去查看. 来来来,我们一起温习下jmeter的命令行参数 -- ...

  7. mysql8.0驱动问题

    <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</a ...

  8. 拓展 NLog 优雅的输送日志到 Logstash

    在上上篇博客通过对aspnetcore启动前配置做了一些更改,以及对nlog进行了自定义字段,可以把请求记录输送到mysql,正式情况可能不会这么部署.因为近期也在学习elk,所以就打算做一个实例,结 ...

  9. 三剑客之awk

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  10. uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比

    框架列表. https://www.cnblogs.com/xiaxiaxia/articles/5705557.html 前言 近期,要开一个新的项目,APP类型.最重要的需求就是能够随时调整APP ...