zoukankan      html  css  js  c++  java
  • nginx 负载均衡 proxy_pass 与 upstream 及 rewrite ,expires 的配置总结

    本文为博主原创,转载请注明出处:

      先查看 一段 nginx 相关的配置:

    location /test/   {
      set $arg_remote_addr $request_id;
      proxy_pass https:
    //self-in_slb_test_service_01; set $resp_status "-"; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header Host $host; proxy_next_upstream error timeout;
      rewrite
    /copyrighttest(.*) $1 break; expires off; } upstream self-in_slb_test_service_01 { server 112.118.0.154:8000 max_fails=0 fail_timeout=180 weight=1;
    server 112.118.0.155:8000 max_fails=0 fail_timeout=180 weight=1;
        keepalive 64; 
    }

      根据上述的配置,分别探究 prxoy_pass与 upstream  , rewrite的配置与功能

    1.  prxoy_pass与 upstream 配置与功能:

      prxoy_pass 用来指定当前模块中请求的URL 或服务器的地址,当配置指定访问的URL 时,其配置如下:

     proxy_pass http://localhost:8000/uri/;

      当配置多个服务器地址时,需要配合 nginx 的 upstream 模块一起使用。upstream 为nginx 的负载均衡模块。

      Nginx 实现负载均衡需要基于 upstream 模块,同时需要设置 location proxy_pass 转发指令实现。

      最上面示例中的 upstream self-in_slb_test_service_01 中的 self-in_slb_test_service_01 为负载均衡的模块的名称,可以任意指定,但需要与vhosts.conf, nginx.conf 虚拟主机中的 proxy_pass 段保持一致,否则不能将请求转发到指定的后端服务器, weight 表示 权重,fail_timeout内检查 max_fails 次数,失败则剔除均衡。

    2. expires 配置

      expires  定义用户浏览器缓存的时间,通过 Expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。如果静态页面不常更新,可以设置 指定的时间,这样可以节省带宽和缓解服务器的压力,在浏览器保存该类型文件的天数。expires  off 为关闭缓存。其设置可以参考如下:

    expires 3d;  # 缓存3天

    3. Nginx Rewrite 规则  

      Rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言。通常而言,几乎所有的 WEB 服务器均可以支持 URL 重写。

      URL 规则重写的用途:

        1.隐藏网站 URL 真实地址,浏览器显示更加美观;

        2.网站变更升级,可以基于 Rewrite 临时重定向到其他页面。

      Nginx Rewrite 规则使用中有三个概念需要理解,分别是:Rewrite 结尾标识符、Rewrite规则常用表达式、Nginx Rewrite 变量,如下为三个概念的详解:

        (1)Nginx Rewrite 结尾标识符,用于 Rewrite 规则末尾,表示规则的执行属性   

            last :      相当于 Apache 里的(L)标记,表示完成 rewrite 匹配;
            break:      本条规则匹配完成后,终止匹配,不再匹配后面的规则。
            redirect:     返回 302 临时重定向,浏览器地址会显示跳转后的 URL 地址。
            permanent:     返回 301 永久重定向,浏览器地址栏会显示跳转后的 URL 地址。
          其中 last 和 break 用来实现 URL 重写时,浏览器地址栏 URL 地址不变。

          (2)Nginx Rewrite 规则常用表达式,主要用于匹配参数、字符串及过滤设置。

            .         匹配任何单字符;      

            [word]          匹配字符串:word;

            [^word]      不匹配字符串:word;
            jfedu|jfteach   可选择的字符串:jfedu|jfteach;
            ?          匹配 0 到 1 个字符;
            *        匹配 0 到多个字符;
            +        匹配 1 到多个字符;
            ^        字符串开始标志;
            $        字符串结束标志;
            \n          转义符标志。

         (3)Nginx Rewrite 变量,常用于匹配 HTTP 请求头信息、浏览器主机名、URL 等。

    HTTP_USER_AGENT              用户使用的代理,例如浏览器;
    HTTP_REFERER                告知服务器,从哪个页面来访问的;
    HTTP_COOKIE                 客户端缓存,主要用于存储用户名和密码等信息;
    HTTP_HOST                  匹配服务器 ServerName 域名;
    HTTP_ACCEPT                 客户端的浏览器支持的 MIME 类型;
    REMOTE_ADDR                 客户端的 IP 地址
    QUERY_STRING                URL 中访问的字符串;
    DOCUMENT_ROOT                服务器发布目录;
    SERVER_PORT                 服务器端口;
    SERVER_PROTOCOL              服务器端协议;
    TIME_YEAR                  年;
    TIME_MON                  月;
    TIME_DAY                  日;

          (4) 示例配置

            将 testa.net 跳转至 www.testb.net。    

          if ($host = 'testa.net' ) {
              rewrite ^/(.*)$ http://www.testb.net/$1  permanent;
          }

            访问/test/test01/跳转至/newindex.html,浏览器地址不变。 

          rewrite  ^/jfedu/test01/$  /newindex.html  last;

    4. $1,$2 的意义

      表示路径中正则表达式匹配的第一个参数

      

  • 相关阅读:
    AvalonDock使用体验
    使用vs2015时,拖拉窗口,窗口隐藏后点击显示就会报错,错误代码“已在“VisualTreeChanged”事件期间更改可视化树”。
    es6的常用新特性
    js如何准确获取当前页面url网址信息
    移动端1px细线解决方案总结
    Zepto tap 穿透bug、解决移动端点击穿透问题
    js继承的方式有几种
    js常用的几种模式
    判断对象类型 typeof instanceof Object.prototype.tostring()
    new的实现机制
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/15717734.html
Copyright © 2011-2022 走看看