zoukankan      html  css  js  c++  java
  • Nginx Rewrite语法详解

    重写中用到的指令

    if  (条件) {}  设定条件,再进行重写

    set #设置变量

    return #返回状态码  return 403;

    break #跳出rewrite

    rewrite #重写

    If  语法格式

    If 空格 (条件) {

        重写模式

    }

    条件又怎么写?

    答:3种写法

    1: “=”来判断相等, 用于字符串比较

    2: “~” 用正则来匹配(此处的正则区分大小写)

       ~* 不区分大小写的正则

    3: -f -d -e来判断是否为文件,为目录,是否存在.

     

    例子:

    if  ($remote_addr = 192.168.1.100) {

                    return 403;

     }

     if ($http_user_agent ~ MSIE) {

                    rewrite ^.*$ /ie.htm;

                    break; #(不break会循环重定向)

     }

     

    if (!-e $document_root$fastcgi_script_name) {

                    rewrite ^.*$ /404.html break;

     }

     注, 此处还要加break,

     

    注意:用url重写时, 正则里如果有”{}”,正则要用双引号包起来

    重新中的一个()内的正则代表后面的一个变量$1,多个(),代表多个$1,$2 变量,这叫 正则表达式的后向引用

    nginx的rewrite规则参考:

    1. ~ 为区分大小写匹配
    2. ~* 为不区分大小写匹配
    3. !~和!~*分别为区分大小写不匹配及不区分大小写不匹
    1. -f和!-f用来判断是否存在文件
    2. -d和!-d用来判断是否存在目录
    3. -e和!-e用来判断是否存在文件或目录
    4. -x和!-x用来判断文件是否可执行
    1. last 相当于Apache里的[L]标记,表示完成rewrite,呵呵这应该是最常用的
    2. break 终止匹配, 不再匹配后面的规则
    3. redirect 返回302临时重定向 地址栏会显示跳转后的地址
    4. permanent 返回301永久重定向 地址栏会显示跳转后的地址

    nginx有以下内置变量

    $args, 请求中的参数;

    $content_length, HTTP请求信息里的"Content-Length";

    $content_type, 请求信息里的"Content-Type";

    $document_root, 针对当前请求的根路径设置值;

    $document_uri, 与$uri相同;

    $host, 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;

    $limit_rate, 对连接速率的限制;

    $request_method, 请求的方法,比如"GET"、"POST"等;

    $remote_addr, 客户端地址;

    $remote_port, 客户端端口号;

    $remote_user, 客户端用户名,认证用;

    $request_filename, 当前请求的文件路径名

    $request_body_file

    $request_uri, 请求的URI,带查询字符串;

    $query_string, 与$args相同;

    $scheme, 所用的协议,比如http或者是https,比如rewrite  ^(.+)$  $scheme://example.com$1  redirect;

    $server_protocol, 请求的协议版本,"HTTP/1.0"或"HTTP/1.1";

    $server_addr, 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费);

    $server_name, 请求到达的服务器名;

    $server_port, 请求到达的服务器端口号;

    $uri, 请求的URI,可能和最初的值有不同,比如经过重定向之类的。

    这些变量可以用在rewrite规则里,也可以打印日志的时候用

  • 相关阅读:
    jquery自调用匿名函数解析
    C# 分页
    C#一般处理程序获取Session
    Python全栈开发,Day12
    Python全栈开发,Day11
    Python全栈开发,Day10
    Python全栈开发,Day9
    Python全栈开发,Day8
    Python全栈开发,Day7
    Python全栈开发,Day6
  • 原文地址:https://www.cnblogs.com/microtiger/p/7620174.html
Copyright © 2011-2022 走看看