zoukankan      html  css  js  c++  java
  • nginx如何实现灰度

    从这个组网可以看到 https://www.cnblogs.com/takemetoyourheart/p/12684018.html  , 我们需要在nginx上通过灰度策略, 使得部分测试用户可以访问到机房B,也就是灰度机房。

    1、在nginx的vhost文件中

    location = /reverse-proxy {

      internal;

      proxy_set_header Host www.xxx.com;

      proxy_set_header X-Forwarded-For $http_x_forwarded_for;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_set_header X-Real-IP $remote_addr;

      proxy_set_header Connection "";

      proxy_http_version 1.1;

      add_header X-Frame-Options "SAMEORIGIN";

      set $verify_return_page $http_referer;

      rewrite_by_lua_file '/opt/test/etc/lua/flow_control/access.lua';

      set_by_lua_file $backend '/opt/test/etc/lua/grey/grey.lua' $backend;

      proxy_pass http://${backend}${request_uri};

    }

    upstream.conf中设置的目的IP分成两种

    upstream xx {

      server 100.100.100.1:8443;

    }

    upstream xx-grey {

      server 100.100.100.2:8443;

    }

    2、lua脚本

    事先要定义grep.ip文件,把灰度的IP都加入进来,形如

    10.10.10.1

    10.10.10.2

    源IP要看网站策略。如果用到CDN,那么就用CDN约定的源IP。否则就是remote_addr

    local ipfile='/opt/test/etc/lua/grey/grey.ip'

    ngx.shared.g_grey_ip:flush_all()

    if ip == nil then

      ip = ngx.var.remote_addr

    end

    if ip ~=nil and ngx.shared.g_grey_ip:get(ip) then

       backend = backend..'-grey'

    end

    这样就实现了在nginx 内嵌入lua脚本,实现灰度IP访问灰度机房的策略。

  • 相关阅读:
    ubuntu video and audio
    js type
    jumpserver 堡垒机环境搭建
    ubuntu dnsmasq
    bind--dns-docker---[nslookup/dig]
    java maven scope compile,provide,system,test,runtime
    docker install and minikube install
    nginx break-circus orange api-gateway
    一个IP能建立的最大连接数是多少?
    Docker 在6.4上安装
  • 原文地址:https://www.cnblogs.com/takemetoyourheart/p/12684298.html
Copyright © 2011-2022 走看看