说明
因为在工作中,我们的软件是在不断升级,比如现在是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;
}