使用 Nginx 部署前端 Vue 项目是一个高效且广泛采用的方案,以下是综合多个权威资料的完整步骤指南,涵盖从项目打包到生产环境配置的全过程:
🔧 1. 准备工作
- 环境要求:
- 已完成的 Vue 项目(确保
package.json
中有build
脚本)。 - 服务器安装 Node.js 和 npm(用于构建项目)。
- Linux 服务器(推荐 Ubuntu/CentOS)并具备 sudo 权限。
📦 2. 打包 Vue 项目
在项目根目录执行以下命令生成静态文件:
npm install # 安装依赖
npm run build # 构建生产环境代码
- 构建完成后,项目目录下会生成
dist
文件夹,包含index.html
及静态资源(JS/CSS/图片等)。
⚙️ 3. 安装 Nginx
根据服务器系统选择命令安装:
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum update
sudo yum install nginx
启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
- 验证安装:访问服务器 IP,若显示 Nginx 欢迎页则成功。
🔐 4. 配置 Nginx
(1) 创建配置文件
在 /etc/nginx/sites-available/
新建配置(如 vue-app
):
sudo nano /etc/nginx/sites-available/vue-app
写入以下内容(关键配置):
server {
listen 80;
server_name your_domain.com; # 替换为域名或 IP
root /var/www/vue-app/dist; # 指向 dist 目录路径
index index.html;
location / {
try_files $uri $uri/ /index.html; # 支持 Vue Router 的 History 模式
}
# 静态资源缓存优化
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 1y;
add_header Cache-Control "public, no-transform";
}
# 禁止访问隐藏文件(如 .htaccess)
location ~ /\. {
deny all;
}
}
关键说明:
try_files
:确保路由跳转由 Vue 处理,避免刷新页面出现 404。- 静态资源缓存:通过
expires
提升加载速度。
(2) 启用配置
sudo ln -s /etc/nginx/sites-available/vue-app /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx # 重启生效
📤 5. 部署项目文件
将本地 dist
文件夹上传至服务器:
scp -r dist/ user@your_server_ip:/var/www/vue-app/
设置文件权限(确保 Nginx 可访问):
sudo chown -R www-data:www-data /var/www/vue-app # Ubuntu
sudo chmod -R 755 /var/www/vue-app
🔒 6. 配置 HTTPS(可选但推荐)
使用 Let’s Encrypt 免费证书:
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx
# 获取并配置证书
sudo certbot --nginx -d your_domain.com
- 证书自动续期(添加定时任务):
echo "0 3 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab > /dev/null
🧪 7. 测试与验证
- 浏览器访问
http://your_domain.com
或https://your_domain.com
。 - 常见问题排查:
- 404 路由错误:检查 Nginx 配置中的
try_files
是否指向index.html
。 - 权限问题:确认
/var/www/vue-app
归属www-data
用户组。 - 静态资源加载失败:检查路径是否正确,或清除浏览器缓存。
⚠️ 8. 高级配置(按需)
- 代理后端 API:
在 Nginx 配置中添加反向代理,解决跨域问题:
location /api/ {
proxy_pass http://backend_server_ip:port/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
- 性能优化:
启用 Gzip 压缩(在配置文件中添加):
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
💎 总结
通过上述步骤,你已成功将 Vue 项目部署到 Nginx 服务器。核心流程可归纳为:项目打包 → Nginx 安装 → 路由配置 → 文件部署 → HTTPS 加固 → 测试验证。Nginx 的高并发处理能力与 Vue 的静态资源结合,可提供稳定高效的访问体验。建议定期更新服务器及依赖库,并监控日志(/var/log/nginx/access.log
)优化性能。