1.问题:小团队,快速迭代开发,版本发布没有经过测试就要放出去,怎样在内网测试过后在外网能在真实环境让内部人员再过一次测试且不影响外网用户

2.实现思想:

a.至少要有两台机器

b.公司是统一出口IP

c.根据IP将请求转发到不同的机器

3.nginx配制:

location / {

content_by_lua '

myIP = ngx.req.get_headers()["X-Real-IP"]

if myIP == nil then

myIP = ngx.req.get_headers()["x_forwarded_for"]

end

if myIP == nil then

myIP = ngx.var.remote_addr

end

if myIP == "公司出口IP" then

ngx.exec("@client")

else

ngx.exec("@client_test")

end

';

}

location @client{

proxy_next_upstream     error timeout;

proxy_redirect          off;

proxy_set_header        Host $host;

#proxy_set_header        X-Real-IP $remote_addr;

proxy_set_header        X-Real-IP $http_x_forwarded_for;

proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size    100m;

client_body_buffer_size 256k;

proxy_connect_timeout   180;

proxy_send_timeout      180;

proxy_read_timeout      180;

proxy_buffer_size       8k;

proxy_buffers           8 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

proxy_pass http://client;

}

location @client_test{

proxy_next_upstream     error timeout;

proxy_redirect          off;

proxy_set_header        Host $host;

#proxy_set_header        X-Real-IP $remote_addr;

proxy_set_header        X-Real-IP $http_x_forwarded_for;

proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size    100m;

client_body_buffer_size 256k;

proxy_connect_timeout   180;

proxy_send_timeout      180;

proxy_read_timeout      180;

proxy_buffer_size       8k;

proxy_buffers           8 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

proxy_pass http://client_test;

}

转载于:https://my.oschina.net/wyunsh5168/blog/613680

使用nginx+lua实现web项目的灰度发布相关推荐

  1. 使用宝塔搭建环境,以及把自己本地的Web项目通过宝塔发布到远程云服务器上

    文章目录 使用宝塔搭建环境,以及把自己本地的Web项目通过宝塔发布到远程云服务器上 XSheel连接到远程云服务器之后使用宝塔搭建环境 使用宝塔搭建服务器的环境 什么是搭建服务器环境 1.安装宝塔 2 ...

  2. Eclipse中web项目的默认发布路径改为外部Tomcat中webapp路径

    可参考http://www.cnblogs.com/mihu/p/4772509.html 和http://www.cnblogs.com/dyllove98/archive/2013/06/07/3 ...

  3. Android、iOS、和Web如何做灰度发布?

    主要参考了: https://www.zhihu.com/question/21714205 https://www.zhihu.com/question/28296375  一.概述 所谓的灰度发布 ...

  4. Jenkins系列之——第四章 Jenkins编译一个Web项目并远程发布到Tomcat

    上一章讲了如何编译我们第一个项目 但是有时候我们不仅仅只是编译更多的是需要发布 在微服务普及之前我们最常用的就无非就是通过tomcat运行war格式的项目了,本章将介绍如何配置一个传统的Java we ...

  5. 使用BeetleX网关对Web应用进行灰度发布

    灰度发布可以更有效地保障服务运作的可靠性,即能让服务得以更新的同时也不影响业务动作.BeetleX网关支持全动态化实时配置,对应用进行灰度发布可以说是非常便利. 灰度发布在BeetleX网关中涉及到以 ...

  6. 【nginx+lua高性能web应用开发(二):开发评论模块(ssi+mysql)】

    开发这个模块,是为了解决项目中的实际问题,思考设计的 . 本文原文连接: http://blog.csdn.NET/freewebsys/article/details/16944917 转载请注明出 ...

  7. nginx linux 部署web项目名,Linux部署web项目配置Nginx

    1.先配置java环境  下载   jdk-7u80-linux-x64.rpm 2.下载数据库 mysql  yum 安装 3.下载linux下的tomcat 解压 4.检测tomcat是否安装成功 ...

  8. 使用 Nginx 如何部署 web 项目

    第一步:前往 Nginx 官方 下载 Nginx 资源包,建议下载 Stable version(长期稳定版本) 第二步:将 Nginx 压缩包解压到本地目录中(D:\Tools) 第三步:进入到已经 ...

  9. Web服务不停机更新和灰度发布方案

    文章目录 Web服务不停机更新和灰度发布方案 当前情况 方案一 负载均衡: 问题: 方案二 灰度发布: 用IF指令实现 根据来源ip做判断 根据cookie做判断 使用lua写脚本实现 使用nginx ...

最新文章

  1. Spring Cloud微服务实战pdf
  2. android怎么创建一个包命名空间,从Android的jar lib中声明命名空间
  3. 慕课学习--DNS的作用
  4. junit 经典示例_JUnit 4,JWebUnit,Arquillian和JSF单元示例教程
  5. 板簧的弹性系数如何计算_一种板簧总成的刚度计算方法、系统及可读存储介质与流程...
  6. 查找销售模块中装箱单提单主提单当前的编号
  7. win8服务器备份在哪个文件夹,iPhone备份文件在哪里?Win8系统路径介绍
  8. pc端不同浏览器兼容性问题及解决方案
  9. RT-Thread:W25Q128虚拟U盘并搭载文件系统
  10. Guitar Pro2023中文版本下载及简谱功能详细介绍
  11. 谷歌开源 ClusterFuzz,自动化查找并修复 bug
  12. http——学习记录
  13. 【Java基础】集合总结(三)——Queue集合、Map集合
  14. 2017第三届美亚杯全国电子数据取证大赛团队赛write up
  15. app上应用市场,被腾讯手机管家报病毒 a.gray.sexpay.m
  16. 驻云科技完成C轮近亿元融资 成为撬起云计算的“支点”
  17. elementui确认消息区分取消和关闭按钮
  18. 2022最新苹果iOS证书制作教程
  19. 【语法14】Python-mysql-connector驱动
  20. Verilog快速入门(13)—— 用3-8译码器实现全减器

热门文章

  1. AntConc3.2.0的使用说明
  2. ORACLE-SQL编写规范(详细解释)
  3. 论述word加密与破解的“矛”与“盾”!
  4. 封箱机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  5. JavaScript jQuery 实现banner(轮播图) 一
  6. 成长的故事――痛且快乐的
  7. 超详细的MES制造执行系统介绍——看板管理
  8. es6新特性------学好类(class)这一篇就够了
  9. 燃烧模拟软件Chemkin教程案例
  10. 数字ic验证门槛高吗?