• 《Nginx


    一: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 404;
        }

        # 正则表达式可使用 ~ / ~*
        # !~ / !~* 和上面使用相反
        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,必须明确声明。

  • 相关阅读:
    X11学习
    Linux 实用命令
    Notepad++ 添加右键菜单
    VS Code编译C/C++
    map与unordered_map的区别
    Rtt / vxworks 任务状态装换对比
    awesome computer vision repo
    英语每日金句
    不要在意七十亿分之一对另七十亿分之一的看法
    致知在格物,物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后
  • 原文地址:https://www.cnblogs.com/25-lH/p/9013617.html
Copyright © 2020-2023  润新知