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;
    }

你可能感兴趣的:(nginx下如何做到应用的分版本部署)