1. 项目概述:从开发到上线的最后一公里
做前端开发的朋友,尤其是用Vue的,肯定都经历过这个阶段:本地开发跑得飞起,功能测试都没问题,但一到要部署上线,心里就开始打鼓。浏览器里
npm run build
一下,看着
dist
文件夹生成,然后呢?怎么把这个文件夹里的东西放到服务器上,让全世界的人都能访问?这“最后一公里”的路,往往比写代码本身还要让人头疼。
我经历过太多次了,从最早的用FTP手动上传,到后来用脚本,再到现在的容器化和自动化流水线。每次部署都像是一次小考,环境差异、路径问题、缓存、性能优化,任何一个环节没处理好,轻则页面白屏,重则服务中断。所以,今天我就以一个过来人的身份,把Vue项目部署上线的全过程,掰开了揉碎了讲清楚。这不仅仅是一个操作步骤的罗列,更是一次对部署逻辑的深度梳理,我会把每一步“为什么这么做”讲明白,并分享那些只有踩过坑才知道的“保命”技巧。
无论你是要把项目部署到自己的云服务器、虚拟主机,还是利用一些现代的PaaS平台,其核心流程和原理都是相通的。我们将围绕最经典、也最可控的“云服务器 + Nginx”方案展开,这套方案理解了,其他任何部署方式你都能触类旁通。整个过程,我们会重点关注几个核心关键词: Vue 、 Nginx 、 配置 。我们的目标很简单:让你能清晰、顺利、稳定地把你的Vue应用推送到线上环境。
2. 部署前的核心准备与思路解析
在动手敲命令之前,我们必须先理清思路。部署不是简单地上传文件,而是一次完整的“环境迁移”。本地开发环境和线上生产环境有天壤之别,理解这种差异是成功部署的第一步。
2.1 环境差异与构建的本质
本地开发时,我们运行的是
npm run serve
(Vue CLI)或
vite
(Vite)。这个命令启动了一个开发服务器,它做了很多“好事”:热重载(HMR)、快速的ES模块加载、源码映射(Source Map)等。但生产环境不需要这些。生产环境需要的是
高性能、小体积、高兼容性
的静态文件。
这就是
npm run build
命令的意义。它会启动一个构建过程:
-
打包与压缩
:将你项目中成千上万的
.vue、.js、.css文件,通过Webpack或Vite打包成少数几个优化后的文件(如app.xxxxxx.js,chunk-vendors.xxxxxx.js)。这个过程会进行“Tree Shaking”(摇树优化)移除未使用代码,并用Terser等工具压缩代码,极大减小体积。 - 资源处理 :图片、字体等资源会被优化(压缩、转Base64内联或生成带哈希的文件名),CSS会被提取并压缩。
-
生成静态资源
:最终,所有处理好的文件都会输出到指定的目录(默认是
dist)。这个dist文件夹里的内容,就是你的“产品”,它们不再依赖Node.js环境,而是纯粹的HTML、CSS、JavaScript和图片。
所以,部署的第一步,永远是在本地完成一次成功的构建。你可以在本地浏览器打开
dist/index.html
文件(直接双击可能不行,因为文件协议限制,最好用
npx serve dist
这类简单HTTP服务器测试),确保没有明显的路径错误或白屏。
2.2 服务器与工具选型考量
为什么选择“云服务器 + Nginx”这个组合?这是经过时间和实践检验的黄金搭档。
- 云服务器(如阿里云ECS、腾讯云CVM) :提供了完全可控的计算环境。你可以自由安装任何软件,进行任何配置,灵活性最高。对于需要后端API(Node.js、Java、Python等)的全栈项目,这是必然选择。
-
Nginx
:它是一个高性能的HTTP和反向代理服务器。对于Vue这类单页应用(SPA),它的核心作用有两个:
-
静态文件服务
:以极高的效率将我们
dist文件夹里的HTML、JS、CSS文件发送给用户的浏览器。 -
路由重写(Fallback)
:这是SPA部署的关键。Vue应用的路由(如
/about,/user/123)是前端路由,在浏览器中由Vue Router管理。当用户直接访问这些URL或刷新页面时,请求会发到服务器对应路径。Nginx需要被配置为:对于这些不存在的文件请求,统统返回index.html,由前端路由自己去处理。没有这个配置,刷新非根路径页面就会得到404错误。
-
静态文件服务
:以极高的效率将我们
当然,现在也有很多优秀的替代或补充方案:
- Docker :将你的应用和Nginx打包成一个镜像,实现环境一致性,“一次构建,到处运行”。非常适合微服务架构和持续集成/部署(CI/CD)。
-
对象存储 + CDN
:将
dist里的静态资源上传到阿里云OSS、腾讯云COS等对象存储,并搭配CDN加速。HTML文件则可以通过服务器或云函数动态生成或直接托管。这种方案分离了资源和页面,访问速度极快,成本也低,特别适合纯静态展示类项目。 - PaaS平台(如Vercel, Netlify, Railway) :这些平台为前端应用做了极致优化,通常只需关联Git仓库,就能自动构建部署,内置了SPA路由支持、HTTPS、全球CDN等。是个人项目或原型验证的绝佳选择,几乎零运维。
我们选择从最基础的“云服务器+Nginx”讲起,是因为理解了它,你就掌握了部署的底层逻辑,其他任何方案都是在这个基础上的封装或变体。
2.3 部署流程全景图
为了让思路更清晰,我把整个部署过程梳理成了一张逻辑图。你可以把它看作本次“上线行动”的路线图。
flowchart TD
A[本地开发完成] --> B[执行 npm run build<br>生成 dist 目录]
B --> C{选择部署方案}
C --> D[传统方案:云服务器]
C --> E[容器化方案:Docker]
C --> F[Serverless方案:PaaS平台]
subgraph D [云服务器部署流程]
D1[购买并配置云服务器] --> D2[安装 Node.js/Nginx]
D2 --> D3[传输 dist 文件至服务器]
D3 --> D4[配置 Nginx 指向 dist]
D4 --> D5[处理 SPA 路由 Fallback]
D5 --> D6[配置域名与 HTTPS]
end
subgraph E [Docker 部署流程]
E1[编写 Dockerfile] --> E2[构建 Docker 镜像]
E2 --> E3[推送至镜像仓库]
E3 --> E4[服务器拉取并运行容器]
end
subgraph F [PaaS 平台部署流程]
F1[关联 Git 仓库] --> F2[自动检测并构建]
F2 --> F3[自动配置域名与 HTTPS]
end
D6 --> G[验证与监控]
E4 --> G
F3 --> G
G --> H[项目成功上线]
如图所示,无论选择哪条路径,其起点都是本地构建,终点都是验证上线。传统服务器方案步骤最具体,也最能体现原理;Docker方案强调环境标准化;PaaS方案则追求极致的开发体验。接下来,我们将深入最经典的云服务器路径,把每一个环节的细节和“坑”都填平。
3. 服务器环境搭建与核心配置详解
假设你已经拥有一台干净的Linux云服务器(以Ubuntu 20.04/22.04 LTS为例)。我们从零开始,把它变成一个能托管Vue应用的Web服务器。
3.1 基础环境安装:Node.js与Nginx
虽然Vue生产包是静态的,但服务器上安装Node.js有两个好处:一是方便未来可能需要运行一些构建脚本或服务端渲染(SSR)应用;二是可以使用
npm
或
yarn
全局安装一些有用的工具。
1. 安装Node.js(推荐使用NodeSource仓库安装稳定版本)
# 更新系统包列表
sudo apt update
# 安装一些基础依赖
sudo apt install -y curl gnupg2
# 添加NodeSource仓库(这里以Node.js 18 LTS为例,可选16, 20等)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
# 安装Node.js
sudo apt install -y nodejs
# 验证安装
node --version # 应输出 v18.x.x
npm --version # 应输出对应版本号
注意 :不建议使用系统自带的
apt install nodejs,版本通常很旧。使用NodeSource或通过nvm安装是更专业的选择。
2. 安装Nginx
sudo apt install -y nginx
安装完成后,Nginx会自动启动。你可以通过
systemctl status nginx
查看状态。此时,在浏览器访问你的服务器公网IP,应该能看到Nginx的欢迎页面。这说明Web服务器基础服务已经就绪。
3. 关键目录说明
-
/var/www/html/:这是Nginx默认的网站根目录。欢迎页面就在这儿。我们通常会为每个项目创建独立的目录,而不是直接放在这里。 -
/etc/nginx/:这是Nginx的核心配置目录。-
/etc/nginx/nginx.conf:主配置文件。 -
/etc/nginx/sites-available/:存放所有可用的网站配置文件(虚拟主机)。 -
/etc/nginx/sites-enabled/:存放已启用的网站配置的符号链接(软链接)。Nginx启动时实际读取的是这里的文件。
-
-
/var/log/nginx/:存放Nginx的访问日志和错误日志, 排查问题的黄金位置 。
3.2 项目文件上传与目录规划
我们需要把本地的
dist
文件夹传到服务器上。有多种方式,推荐使用
rsync
或
scp
。
1. 在服务器上创建项目目录 一个好的习惯是为每个项目创建独立的目录,并以域名或项目名命名,便于管理。
# 假设你的域名是 myvueapp.com
sudo mkdir -p /var/www/myvueapp
# 修改目录所有者为你当前的用户,方便后续上传文件,无需每次都sudo
sudo chown -R $USER:$USER /var/www/myvueapp
2. 使用rsync同步本地dist目录到服务器
rsync
比
scp
更智能,支持增量同步和断点续传。
在 你的本地电脑 上打开终端,进入Vue项目根目录,执行:
# 请将 your_server_ip 替换为你的服务器公网IP,将 /path/to/your/project 替换为你的项目路径
rsync -avz --delete ./dist/ username@your_server_ip:/var/www/myvueapp/
-
-a:归档模式,保持文件属性。 -
-v:显示详细过程。 -
-z:传输时压缩,加快速度。 -
--delete:删除目标目录中存在而源目录中没有的文件,保持两边完全一致。 -
./dist/:注意后面的/,它表示同步dist目录下的 内容 到目标目录。如果没有/,则会同步dist这个文件夹本身。
输入服务器密码后,文件就开始传输了。你也可以配置SSH密钥免密登录,这样更安全方便。
3.3 Nginx核心配置深度解析
这是部署中最关键的一步。我们将创建一个独立的Nginx配置文件。
1. 创建配置文件
在
/etc/nginx/sites-available/
目录下创建一个以你域名命名的配置文件。
sudo nano /etc/nginx/sites-available/myvueapp
2. 写入核心配置内容 将以下配置粘贴进去,我会逐段解释。
server {
# 监听80端口(HTTP)
listen 80;
# 监听IPv6地址的80端口,如果服务器支持IPv6
listen [::]:80;
# 你的域名,如果没有域名就写服务器IP地址
server_name myvueapp.com www.myvueapp.com;
# 网站根目录,指向我们上传的dist文件夹
root /var/www/myvueapp;
# 默认索引文件,Vue构建后就是index.html
index index.html;
# 开启gzip压缩,提升传输效率
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
# 核心配置:处理Vue Router的history模式
location / {
# 首先尝试按请求的URI寻找文件(如/css/app.xxx.css)
# 如果没找到,再尝试寻找目录(虽然对SPA用处不大)
# 如果都找不到,则将请求重写到/index.html,交给前端路由处理
try_files $uri $uri/ /index.html;
}
# 可选:静态资源缓存优化
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
# 尝试直接访问带哈希的文件,如果没找到再尝试不带哈希的(应对一些特殊情况)
try_files $uri =404;
}
# 可选:禁止访问以点开头的隐藏文件,如.git, .env等
location ~ /\. {
deny all;
return 404;
}
# 错误页面配置(可选,但建议)
error_page 404 /index.html; # 对于SPA,404也返回首页
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
3. 配置详解与避坑指南
-
try_files $uri $uri/ /index.html;: 这是SPA部署的灵魂指令 。它的执行逻辑是:当用户请求/about时,Nginx会先检查/var/www/myvueapp/about这个文件是否存在,显然不存在;然后检查/var/www/myvueapp/about/这个目录,也不存在;最后,它将请求内部重写到/index.html。浏览器收到index.html后,Vue Router被加载,它根据浏览器地址栏的/about来渲染对应的组件。没有这条指令,访问/about就会直接返回404。 -
静态资源缓存
:我们对JS、CSS、图片等文件设置了长达1年的过期时间,并标记为
immutable(不可变)。这利用了Vue构建生成的文件名带哈希的特性(如app.abc123.js)。文件内容一变,哈希就变,URL就变,浏览器就会请求新文件。这种“永久缓存”策略能极大提升重复访客的加载速度。try_files $uri =404;确保了如果带哈希的文件不存在(比如错误请求),直接返回404,而不是错误地回退到index.html。 -
隐藏文件保护
:
location ~ /\.这个配置块非常重要,它能防止任何人通过URL访问到你的.git目录、.env配置文件等敏感信息,这是一个基本的安全措施。
4. 启用配置并测试
创建从
sites-available
到
sites-enabled
的软链接,然后测试Nginx配置语法是否正确,最后重启Nginx。
# 创建软链接
sudo ln -s /etc/nginx/sites-available/myvueapp /etc/nginx/sites-enabled/
# 测试配置语法,任何错误信息都要解决
sudo nginx -t
# 如果显示 “syntax is ok” 和 “test is successful”,则重载Nginx使配置生效
sudo systemctl reload nginx
现在,你应该可以通过服务器IP地址(如果还没解析域名)访问到你的Vue应用了,并且前端路由(如刷新
/about
页面)也能正常工作。
4. 进阶部署:域名、HTTPS与自动化
基础部署完成后,为了让项目更专业、更安全,我们还需要做以下几件事。
4.1 域名绑定与HTTPS强制升级
拥有域名并启用HTTPS(SSL/TLS)是现代网站的标配,它能提升信任度,也是很多现代Web API(如地理位置、Service Worker)的要求。
1. 域名解析
在你的域名注册商(如阿里云、腾讯云、Godaddy)的控制台,添加一条A记录,将你的域名(如
myvueapp.com
)和
www
子域名指向你的服务器公网IP地址。DNS生效需要几分钟到几小时。
2. 使用Certbot免费获取SSL证书 Let‘s Encrypt提供了免费的自动化证书。Certbot是官方推荐的客户端,能自动完成证书获取和Nginx配置。
# 安装Certbot和Nginx插件
sudo apt install -y certbot python3-certbot-nginx
# 为你的域名申请并自动配置证书
# Certbot会自动读取Nginx配置中的server_name,并修改配置启用HTTPS
sudo certbot --nginx -d myvueapp.com -d www.myvueapp.com
按照交互提示操作(主要是同意条款和提供邮箱)。Certbot会自动完成:
- 向Let‘s Encrypt验证你对域名的控制权。
-
下载证书文件到
/etc/letsencrypt/live/your_domain/。 -
修改你的Nginx配置文件,添加监听443端口的
server块,并配置SSL证书路径。 - 添加一个重定向,将所有的HTTP(80端口)请求自动跳转到HTTPS(443端口)。
3. 验证与自动续期 Let‘s Encrypt证书有效期为90天,但Certbot安装时会自动添加一个定时任务(cron job或systemd timer)来续期证书,你基本不用操心。可以手动测试续期流程:
sudo certbot renew --dry-run
现在,用
https://myvueapp.com
访问你的网站,浏览器地址栏应该会显示安全锁标志。
4.2 构建与部署自动化脚本
手动执行
npm run build
和
rsync
效率低下且容易出错。我们可以编写一个简单的Shell脚本来自动化这个过程。
在Vue项目根目录创建一个文件,例如
deploy.sh
:
#!/bin/bash
echo "开始构建Vue项目..."
# 执行构建,假设你用的是Vue CLI。如果是Vite,命令可能是 npm run build
npm run build
# 检查构建是否成功
if [ $? -ne 0 ]; then
echo "构建失败,请检查错误信息!"
exit 1
fi
echo "构建成功,开始同步文件到服务器..."
# 使用rsync同步dist目录内容到服务器
# 请替换下面的变量为你的实际信息
SERVER_IP="your_server_ip"
SERVER_USER="username"
SERVER_PROJECT_PATH="/var/www/myvueapp"
rsync -avz --delete ./dist/ $SERVER_USER@$SERVER_IP:$SERVER_PROJECT_PATH/
if [ $? -eq 0 ]; then
echo "文件同步成功!"
echo "正在重启Nginx服务..."
ssh $SERVER_USER@$SERVER_IP "sudo systemctl reload nginx"
echo "部署完成!"
else
echo "文件同步失败!"
exit 1
fi
给脚本添加执行权限并运行:
chmod +x deploy.sh
./deploy.sh
这个脚本完成了本地构建、上传、远程重启Nginx的一键操作。你可以根据需要扩展它,比如在构建前拉取最新代码、执行测试、发送部署成功通知等。
4.3 使用Docker容器化部署(可选但推荐)
Docker能完美解决“在我机器上好好的”的环境问题。我们创建一个包含Nginx和你的Vue应用的Docker镜像。
1. 编写Dockerfile
在Vue项目根目录创建
Dockerfile
(无后缀):
# 构建阶段:使用Node镜像来构建应用
FROM node:18-alpine AS build-stage
WORKDIR /app
# 复制package文件并安装依赖(利用Docker层缓存)
COPY package*.json ./
RUN npm ci --only=production
# 复制源代码并构建
COPY . .
RUN npm run build
# 生产阶段:使用更小的Nginx镜像来服务静态文件
FROM nginx:stable-alpine AS production-stage
# 将构建产物从上一阶段复制到Nginx的默认服务目录
COPY --from=build-stage /app/dist /usr/share/nginx/html
# 复制自定义的Nginx配置(如果需要)
# COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
2. 构建并运行Docker镜像
# 在项目根目录构建镜像
docker build -t my-vue-app .
# 运行容器,将容器的80端口映射到主机的8080端口
docker run -d -p 8080:80 --name vue-app-container my-vue-app
现在访问
http://localhost:8080
就能看到应用。在任何安装了Docker的机器上,都能通过这两条命令一致地运行你的应用,彻底摆脱环境依赖。
5. 上线后验证、监控与常见问题排查
部署完成不是终点,确保应用稳定运行并知道如何排查问题同样重要。
5.1 上线后核心检查清单
-
功能验证
:
- 访问首页,确保加载正常,无JS/CSS资源404错误。
-
测试前端路由:手动在地址栏输入或点击跳转到非根路径(如
/about),然后刷新页面,不应出现404。 -
测试所有主要功能模块,特别是需要调用后端API的接口,检查网络请求(F12打开开发者工具)是否正常,注意
API地址是否正确指向生产环境
。这是最常见的错误之一,很多人忘记修改
axios的baseURL。
-
性能与安全扫描
:
- 使用Google Chrome的Lighthouse工具进行性能、无障碍、最佳实践和SEO评分。
- 检查HTTPS是否生效,证书是否有效。
- 确保没有控制台错误(Console Errors)。
-
SEO基础检查
:对于需要搜索引擎收录的页面,确保
index.html中的<title>和<meta name="description">是动态或正确的。对于Vue Router的history模式,可以考虑搭配服务端渲染(SSR)或静态站点生成(SSG)以获得更好的SEO。
5.2 必备的日志查看与监控命令
当出现问题时,服务器日志是你的第一手资料。
-
查看Nginx访问日志(实时跟踪)
:
sudo tail -f /var/log/nginx/access.log -
查看Nginx错误日志(排查问题根源)
:
sudo tail -f /var/log/nginx/error.log -
查看最近发生的错误
:
sudo grep -i error /var/log/nginx/error.log | tail -20 -
监控服务器资源
:
# 查看实时进程和资源占用 htop # 或 top # 查看磁盘空间 df -h
5.3 高频问题与解决方案速查表
我把这些年遇到的和大家常问的问题整理成了下表,你可以像查字典一样快速找到可能的原因和解决办法。
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 页面白屏,控制台报404错误(资源加载失败) |
1. 文件路径错误。
2. Nginx配置的
root
目录不对。
3. 文件权限问题。 |
1. 检查浏览器开发者工具“网络(Network)”标签,看具体哪个文件404。
2. 核对Nginx配置中
root
指令的路径是否绝对正确,是否包含
dist
文件夹。
3. 登录服务器,检查
/var/www/myvueapp
目录下的文件是否存在且可读 (
ls -la
)。
4. 确保Nginx进程用户(通常是
www-data
或
nginx
)有读取该目录的权限 (
sudo chmod -R 755 /var/www/myvueapp
)。
|
首页能打开,但刷新非根路径(如
/about
)报404
| Nginx未配置SPA Fallback。 这是最经典的问题。 |
检查Nginx配置中对应
location /
块内是否有
try_files $uri $uri/ /index.html;
这条指令。确保它存在且位置正确。修改后务必
sudo nginx -t
测试并
sudo systemctl reload nginx
重载。
|
| 访问慢,特别是首次加载 |
1. 未开启Gzip压缩。
2. 静态资源未设置缓存。 3. 服务器带宽或配置低。 4. 资源文件过大。 |
1. 确认Nginx配置中
gzip
相关指令已开启。
2. 确认对JS/CSS/图片的
location
块设置了
expires
缓存。
3. 使用Lighthouse或WebPageTest进行性能分析,优化图片、代码分割。 4. 考虑引入CDN加速静态资源。 |
| API请求失败(网络错误或跨域CORS) |
1. 前端代码中API地址仍指向本地(
localhost
)。
2. 生产环境后端服务未启动或端口不对。 3. 后端未正确配置CORS。 |
1.
首要检查
:使用环境变量管理API地址。确保构建时使用了生产环境变量。
2. 检查后端服务是否在运行 (
systemctl status your-backend-service
)。
3. 在后端代码中正确配置CORS头,允许你的前端域名访问。 |
| 修改了Nginx配置但未生效 |
1. 配置文件语法错误。
2. 未重载/重启Nginx。 3. 配置未放在正确位置或软链接未创建。 |
1. 永远先运行
sudo nginx -t
测试语法。
2. 语法无误后,使用
sudo systemctl reload nginx
平滑重载配置。
3. 检查
sites-enabled
目录下的软链接是否指向正确的配置文件。
|
| Docker容器运行后无法访问 |
1. 容器端口未映射到主机。
2. 主机防火墙(如ufw)阻止了端口。 3. 容器内应用未监听正确端口。 |
1. 检查
docker run
命令的
-p
参数,如
-p 8080:80
。
2. 检查主机防火墙规则 (
sudo ufw status
)。
3. 进入容器检查 (
docker exec -it container_id sh
) 并
curl localhost
。
|
5.4 个人实操心得与避坑指南
-
环境变量是命门
:前后端分离项目,前端需要调用后端API。
绝对不要
在前端代码里写死
localhost:3000这样的地址。一定要用环境变量(Vue CLI是.env.production, Vite是.env.production)。我在项目根目录创建.env.production文件,内容如VUE_APP_API_URL=https://api.myapp.com,然后在代码中用process.env.VUE_APP_API_URL引用。构建时,vue-cli-service会自动替换。这是血泪教训,能避免90%的部署后接口调用问题。 -
“权限”二字值千金
:Linux系统下,权限问题层出不穷。记住一个原则:运行Nginx的用户(用
ps aux | grep nginx查看,通常是www-data或nginx)必须对网站根目录 有读取和执行(rx)权限 。我习惯的做法是:将项目目录所有者设为我的个人用户,然后给其他用户添加读取和执行权限 (sudo chmod -R 755 /var/www/myproject)。同时,确保目录本身和父目录也有执行权限。 -
配置测试是护身符
:每次修改Nginx配置后,养成肌肉记忆:先
sudo nginx -t。这个命令能揪出99%的语法错误,比如少个分号、括号不匹配。测试通过后再重载。盲目重启服务可能导致线上服务中断。 -
日志是你的眼睛
:遇到问题别瞎猜,第一时间看日志。
tail -f命令实时查看访问日志和错误日志,能让你清晰地看到每一个请求是怎么来的,Nginx是怎么处理的,错误信息是什么。很多看似诡异的问题,在日志里都一目了然。 -
从小流量开始
:第一次上线,尤其是重要项目,不要一下子把全部流量切过来。可以先用一个子域名(如
staging.myapp.com)部署,进行完整测试。或者在生产环境用Nginx的location做灰度发布,将少量用户IP的请求导向新版本,验证无误后再全量切换。

3375

被折叠的 条评论
为什么被折叠?



