nginx基于精确IP灰度发布(负载到不同机器)http

解决问题:

代码发布公司后,公司内部需要先测试,但其他用户正常使用
(此文章未使用lua模块)

  1. 参考:http://purplegrape.blog.51cto.com/1330104/1403123/
  2. 三个web容器,一个用作负载的nginx,一个web应用容器的nginx,一个web应用容器的apache
  3. 用作负载的nginx配置,在nginx的主配置中的http节点:/etc/nginx/nginx.conf.
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #以上四个配置为获取真实IP,因为经过nginx转发后,默认IP为127.0.0.1
    upstream prod{
    server xxx.xxx.xxx.xxx:8080;
    }
    upstream pre-prod{
        server xxx.xxx.xxxx.xxx;
    }

    server
    {
    listen 80;
    set $web_backend prod;
    if ($remote_addr ~ “183.15.252.29”) {
    set $web_backend pre-prod;
    }

    location / {
                proxy_pass http://$web_backend;
        }
    }
  4. web应用容器的apache:作为第一个或默认的web应用配置
    因为nginx负载转发时,访问是的http://xxx.xxx.xxx.xxx
  5. web应用容器的nginx:作为第一个或默认的web应用配置
    因为nginx负载转发时,访问是的http://xxx.xxx.xxx.xxx
  6. 问题说明1:
    以下是为了在请求头写入原始请求信息,否则在后端的web容器中或者domain就是pre-prod或者prod.切记!获取真实IP地址。
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  7. 问题说明2:
    upstream里面使用域名,还是默认访问web容器的第一个配置或默认配置,本来是想再再负载一次.但想到既然都用过负载了,不再需要考虑域名转发
  8. 还看到使用nginx的lua模块语言来作灰度
  9. 三个web容器,在做了负载后,不管哪个还是可以做多域名多虚拟空间的使用.记住的是后端加入负载的应该放入第一个默认项目,暂未解决根据域名转发
    8.经测试,按上面的配置,访问正常,包括有多级文件夹
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值