好的,使用 Nginx 部署前端项目的全过程可以分为以下几个核心步骤。我将以一个常见的 Vue.js / React 项目为例,详细说明从构建到最终访问的每一个环节。
![图片[1]_用nginx部署前端项目全过程_知途无界](https://zhituwujie.com/wp-content/uploads/2025/11/d2b5ca33bd20251129103401-1024x598.png)
整体流程概览
- 准备工作:服务器环境、域名(可选)、项目源代码。
- 构建生产环境代码:在项目本地将源代码编译、压缩、打包成静态文件(HTML, CSS, JS, 图片等)。
- 上传静态文件:将打包好的文件传输到服务器。
- 安装与配置 Nginx:在服务器上安装 Nginx,并修改其配置文件,指向你的静态文件目录并设置路由规则。
- 启动与验证:启动 Nginx 服务,并通过浏览器访问服务器 IP 或域名,验证部署是否成功。
第一步:准备工作
- 一台 Linux 服务器
- 操作系统推荐:CentOS 7+、Ubuntu 18.04+ 等。
- 确保服务器已连接到互联网。
- Nginx 安装准备
- 你需要拥有服务器的
root权限或sudo权限。 - 更新系统软件包列表:
# Ubuntu/Debian sudo apt update # CentOS/RHEL sudo yum update
- 你需要拥有服务器的
- 你的前端项目代码
- 假设你的项目是使用 Vue CLI 或 Create React App 创建的。
- (可选)一个域名
- 如果你希望使用域名访问,需要提前将域名解析到你的服务器公网 IP。
第二步:构建生产环境代码(在本地开发机操作)
这一步的目的是将你的源代码“编译”成浏览器可以直接运行的、优化过的静态文件。
- 进入你的项目根目录。
- 执行构建命令:
- Vue.js 项目:
npm run build # 或者 yarn build执行成功后,会在项目根目录下生成一个dist文件夹,里面就是所有静态资源。 - React 项目 (Create React App):
npm run build # 或者 yarn build执行成功后,会在项目根目录下生成一个build文件夹。
- Vue.js 项目:
- 打包构建产物:
为了方便上传,你可以将生成的dist(或build)文件夹压缩成一个.zip或.tar.gz文件。# 示例:将 dist 文件夹压缩 tar -czvf frontend-project.tar.gz dist/
第三步:上传静态文件到服务器
现在需要将构建好的静态文件放到服务器上。
- 登录你的服务器。
- 创建一个用于存放前端文件的目录,例如
/var/www/my-frontend:sudo mkdir -p /var/www/my-frontend - 上传文件:
使用scp、sftp或rsync等工具将本地的dist.zip(或frontend-project.tar.gz)上传到服务器的某个临时目录,例如/tmp。- 使用 scp 命令示例(在本地终端执行):
scp /path/to/your/dist.zip username@your_server_ip:/tmp/
- 使用 scp 命令示例(在本地终端执行):
- 解压文件到目标目录:
# 进入目标目录 cd /var/www/my-frontend # 解压(假设你上传的是 dist.zip) sudo unzip /tmp/dist.zip # 如果是 tar.gz # sudo tar -xzvf /tmp/frontend-project.tar.gz -C ./解压后,/var/www/my-frontend目录下应该直接包含index.html和各种资源文件夹(css,js,img等)。
第四步:安装与配置 Nginx
4.1 安装 Nginx
- Ubuntu/Debian:
sudo apt install nginx - CentOS/RHEL:
# 可能需要先安装 EPEL 源 sudo yum install epel-release sudo yum install nginx
安装完成后,Nginx 会自动启动。你可以通过 systemctl status nginx 检查状态。
4.2 配置 Nginx
Nginx 的主要配置文件通常在 /etc/nginx/nginx.conf,但最佳实践是为每个站点创建独立的配置文件,放在 /etc/nginx/conf.d/ 目录下,或者以 .conf 结尾放在 /etc/nginx/sites-available/ 并通过软链接到 /etc/nginx/sites-enabled/(Ubuntu 常用)。
这里我们采用最简单的方式:在 /etc/nginx/conf.d/ 下创建一个新的配置文件。
- 创建一个新的配置文件,例如
my-frontend.conf:sudo vim /etc/nginx/conf.d/my-frontend.conf - 写入以下配置内容:
# 定义一个服务器块(虚拟主机) server { # 监听 80 端口(HTTP) listen 80; # 如果你的域名已经解析好了,可以在这里设置 # server_name your-domain.com www.your-domain.com; # 如果没有域名,则用服务器IP访问,可以注释掉上一行或写 server_name _; server_name _; # 设置网站的根目录,指向你上传的静态文件位置 root /var/www/my-frontend; # 设置默认的索引文件 index index.html; # 核心:处理前端路由(SPA 应用如 Vue Router 'history' 模式必需) location / { try_files $uri $uri/ /index.html; } # 可选:缓存静态资源(如图片、CSS、JS),提升性能 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 1y; add_header Cache-Control "public, immutable"; } # 可选:禁止访问隐藏文件(如 .gitignore, .env) location ~ /\. { deny all; access_log off; log_not_found off; } }配置关键点解释:root: 指定了 Nginx 从哪里寻找文件来响应请求。location /+try_files ...: 这是部署 单页面应用(SPA) 的关键。当用户直接访问http://your-server/login这样的深层链接时,Nginx 会先在磁盘上查找/login这个文件或目录,如果找不到,就会内部重定向到/index.html,然后由前端的 JavaScript 路由接管并渲染正确的页面。如果没有这个配置,直接访问非首页链接会出现 404 错误。expires: 为静态资源设置强缓存,极大减轻服务器压力,加快用户访问速度。
第五步:启动与验证
- 检查 Nginx 配置语法是否正确:
sudo nginx -t如果输出syntax is ok和test is successful,说明配置文件无误。 - 重载 Nginx 配置:
如果 Nginx 已经在运行,使用重载命令可以使新配置生效而不中断服务。sudo nginx -s reload # 或者使用 systemctl sudo systemctl reload nginx如果是第一次安装,可能需要启动:sudo systemctl start nginx - 开放防火墙端口:
确保服务器的防火墙(如firewalld或ufw)放行了 80 端口(HTTP)。- Firewalld (CentOS):
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload - UFW (Ubuntu):
sudo ufw allow 'Nginx HTTP'
- Firewalld (CentOS):
- 验证访问:
- 打开你的浏览器,输入
http://<你的服务器IP地址>。 - 如果配置了域名,输入
http://<你的域名>。 - 你应该能看到你的前端项目首页。测试一下之前会导致 404 的深链接,现在应该也能正常显示。
- 打开你的浏览器,输入
进阶与排错
- 403 Forbidden 错误:
- 检查
/var/www/my-frontend目录的权限,确保 Nginx 进程用户(通常是www-data或nginx)有读取权限。可以使用sudo chown -R nginx:nginx /var/www/my-frontend(CentOS) 或sudo chown -R www-data:www-data /var/www/my-frontend(Ubuntu) 来修复。 - 检查
index.html文件是否存在于root指定的目录中。
- 检查
- 502 Bad Gateway 错误:
- 这个错误通常发生在 Nginx 作为反向代理时,后端服务(如 Node.js, Python)没有正常运行。纯静态文件部署不会出现此问题,如果出现,请检查 Nginx 配置是否误配了
proxy_pass。
- 这个错误通常发生在 Nginx 作为反向代理时,后端服务(如 Node.js, Python)没有正常运行。纯静态文件部署不会出现此问题,如果出现,请检查 Nginx 配置是否误配了
- 开启 HTTPS:
- 推荐使用 Let’s Encrypt 的免费 SSL 证书。可以使用
certbot工具自动化完成证书申请和 Nginx 配置。 - 安装 certbot:
sudo apt install certbot python3-certbot-nginx(Ubuntu) - 获取证书并自动配置 Nginx:
sudo certbot --nginx -d your-domain.com - 配置完成后,Certbot 会自动修改你的 Nginx 配置文件,将监听 80 端口的 server block 改为监听 443 并配置 SSL。
- 推荐使用 Let’s Encrypt 的免费 SSL 证书。可以使用
至此,你已经成功完成了使用 Nginx 部署前端项目的全过程!
© 版权声明
文中内容均来源于公开资料,受限于信息的时效性和复杂性,可能存在误差或遗漏。我们已尽力确保内容的准确性,但对于因信息变更或错误导致的任何后果,本站不承担任何责任。如需引用本文内容,请注明出处并尊重原作者的版权。
THE END

























暂无评论内容