nginx下如何做到应用的分版本部署

说明

因为在工作中,我们的软件是在不断升级,比如现在是v0.4版本,但是以后会升级到v0.5。这时,我们要保证两点:

  • 不带版本访问的时候,访问到的是最新版本。
  • 带版本访问的时候,访问的是指定版本的服务。

例如:访问v0.5的时候,可以调到v0.5的程序;在访问旧的v0.4的时候,访问的就是v0.4的版本。

这里简单说明下:

配置

这里比较懒,直接copy了!

server {
        listen       80;
        server_name  api.m.example.com;
        charset utf-8;
        root   /home/app/api.m.example.com/v0.5/web/;   #默认路径,指向最新版本v0.5。不带版本时,访问的就是最新版本v0.5。

        location / {
            index  index.php index.html index.htm;    #站点目录index设置
        }

        #当访问/v0.4/版本目录时,会找/home/app/api.m.example.com/v0.4/web/
        location /v0.4/ {
            index index.php;
            alias /home/app/api.m.example.com/v0.4/web/; 
        } 
        #当进入v0.4目录后,会在/home/app/api.m.example.com/v0.4/web/目录下找index.php程序读取
        location ~ ^/v0.4/(.*\.php)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /home/app/api.m.example.com/v0.4/web/$1; 
            include        fastcgi_params;
        }

        location /v0.5/ {
            index index.php;
            alias /home/app/api.m.example.com/v0.5/web/;
        }
        location ~ ^/v0.5/(.*\.php)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /home/app/api.m.example.com/v0.5/web/$1;
            include        fastcgi_params;
        }

        #此标签必须配置到最后面,否则会出现始终访问这个location,而不访问其他版本目录
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        access_log /home/logs/api.m.example.com/access.log access;
        error_log /home/logs/api.m.example.com/error.log info;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,067评论 25 709
  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 10,091评论 0 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,064评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,330评论 2 33
  • 策略模式# 类图: 策略模式定义了算法簇,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的...
    浩亮亮亮亮阅读 1,495评论 0 0

友情链接更多精彩内容