• ngnix的配置方式


    常规ngnix的配置:

    upstream servers.com{

      server 127.0.0.1:18080;

      server 127.0.0.1:28080;

    }

    location / {

      proxy_pass http://servers.com;

    }

    location 语法规则:

    location [=|~|~*|^~] /uri/ { … }

    = 开头表示精确匹配

    ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。

    ~ 开头表示区分大小写的正则匹配

    ~*  开头表示不区分大小写的正则匹配

    !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则

    / 通用匹配,任何请求都会匹配到。

    实例:
    
          location = / {
              #规则A
          }
          location = /login {
              #规则B
          }
          location ^~ /static/ {
              #规则C
          }
          location ~ .(gif|jpg|png|js|css)$ {
              #规则D
          }
          location ~* .png$ {
              #规则E
          }
          location !~ .xhtml$ {
              #规则F
          }
          location !~* .xhtml$ {
              #规则G
          }
          location / {
              #规则H
          }
    
    
    1. 访问根目录/,比如http://localhost/将匹配规则A
    
    2. 访问 http://localhost/login 将匹配规则Bhttp://localhost/register则匹配规则H
    
    3. 访问 http://localhost/static/a.html 将匹配规则C
    
    4. 访问 http://localhost/a.gif,http://localhost/b.jpg 将匹配规则D规则E,但是规则D顺序优先,规则E不起作用,而http://localhost/static/c.png则优先匹配到规则C
    
    5. 访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。
    
    6. 访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
    
    7. 访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(PHP),tomcat(jsp),nginx作为方向代理服务器存在。

    upstream的分配方式

    upstream中server指令语法如下:

            server address [parameters]

            关键字server必选。

            address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号。

            parameters是可选参数,可以是如下参数:

            down:表示当前server已停用

            backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求。

    1、轮询    

    轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。
            upstream backend {
                server 192.168.1.101:8888;
                server 192.168.1.102:8888;
                server 192.168.1.103:8888;
            }

    2、weight

    轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
            upstream backend {
                server 192.168.1.101 weight=1;
                server 192.168.1.102 weight=2;
                server 192.168.1.103 weight=3;
            }

    weight:表示当前server负载权重,权重越大被请求几率越大。默认是1.

    3、ip_hash

    每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
            upstream backend {
                ip_hash;
                server 192.168.1.101:7777;
                server 192.168.1.102:8888;
                server 192.168.1.103:9999;
            }

    4、fair

    fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。
            upstream backend {
                server 192.168.1.101;
                server 192.168.1.102;
                server 192.168.1.103;
                fair;
            }

    5、url_hash

    与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
            upstream backend {
                server 192.168.1.101;
                server 192.168.1.102;
                server 192.168.1.103;
                hash $request_uri;
                hash_method crc32;
            }

    upstream中server指令语法如下:        server address [parameters]        关键字server必选。        address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号。        parameters是可选参数,可以是如下参数:        down:表示当前server已停用        backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求。

  • 相关阅读:
    keras环境搭建
    通过程序自动设置网卡的“internet共享”选项
    编译pjsip源码
    电商开发必备,淘宝商品和类目体系是如何设计的
    pom.xml成了普通xml文件
    springboot application.properties不生效
    SpringBoot进阶教程(七十二)整合Apollo
    SpringBoot进阶教程(七十一)详解Prometheus+Grafana
    SpringBoot进阶教程(七十)SkyWalking
    Java8 lamda表达式
  • 原文地址:https://www.cnblogs.com/linhongwenBlog/p/13273968.html
Copyright © 2020-2023  润新知