当前位置: 首页 > news >正文

vue项目打包后dist部署到Nginx

vue项目 npm run build 打包后部署到nginx服务器

部署步骤

1. 下载并安装Nginx

  1. 下载Nginx for Windows

    • 访问:http://nginx.org/en/download.html
    • 下载 nginx-1.x.x.zip (Windows版本)
  2. 解压到指定目录

    C:\nginx\
    

2. 配置Nginx

  1. 将配置文件放到正确位置

    C:\nginx\conf\nginx.conf
    

主要是修改conf目录下的nginx.conf文件内容

# 工作进程数(单进程满足基础需求,多核可调整为 CPU 核心数)
worker_processes 1;events {# 单个工作进程最大连接数worker_connections 1024;
}http {# 引入 MIME 类型映射(识别不同文件类型)include mime.types;# 默认文件类型(未识别类型按二进制流处理)default_type application/octet-stream;# 日志配置(保留核心访问日志字段,简化冗余定义)log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;  # 访问日志路径error_log logs/error.log;         # 错误日志路径# 基础性能优化(保留核心参数,删除重复配置)sendfile on;          # 启用高效文件传输tcp_nopush on;        # 提升静态文件传输效率tcp_nodelay on;       # 提升动态请求响应速度keepalive_timeout 65; # 客户端连接超时时间# Gzip 压缩(保留核心压缩配置,精简重复项)gzip on;gzip_vary on;gzip_min_length 1024;  # 仅压缩大于 1KB 的文件gzip_proxied any;      # 对代理请求也启用压缩gzip_comp_level 6;     # 压缩级别(1-9,6 为平衡值)gzip_types text/plain text/css text/xml text/javascriptapplication/json application/javascriptapplication/xml+rss application/atom+xml image/svg+xml;# 核心服务配置(监听 80 端口,部署前端+代理后端)server {listen 80;server_name localhost;root C:/Users/Administrator/Desktop/toolset/frontend/dist;  # 前端静态文件路径index index.html;  # 默认首页# 1. 前端静态资源处理(含路由兼容+静态资源缓存)location / {try_files $uri $uri/ /index.html;  # 解决 SPA 路由刷新 404 问题# 静态资源(JS/CSS/图片等)长期缓存location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {expires 1y;add_header Cache-Control "public, immutable";}}# 2. API 代理(聚合 /api/ 和 /feedback/ 代理逻辑,减少重复)location ~ ^/(api|feedback)/ {proxy_pass http://127.0.0.1:8083$request_uri;  # 动态拼接请求路径,避免重复配置# 传递客户端真实信息给后端proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 超时与缓冲配置(API 通用设置)proxy_connect_timeout 30s;proxy_send_timeout 30s;proxy_read_timeout 30s;proxy_buffering on;proxy_buffer_size 4k;proxy_buffers 8 4k;}# 3. 健康检查(关闭日志,减少冗余输出)location /health {proxy_pass http://127.0.0.1:8083/health;access_log off;}# 4. 错误页面配置error_page 404 /404.html;                    # 404 指向前端自定义页面error_page 500 502 503 504 /50x.html;        # 服务器错误指向 Nginx 默认 50x 页面location = /50x.html {root html;  # 50x.html 所在路径(Nginx 默认 html 目录)}}
}

api接口和dist目录需要做适当修改

  1. 创建必要的目录

    mkdir C:\nginx\logs
    mkdir C:\nginx\html
    

3. 重新打包前端

cd toolset-frontend
npm run build

4. 复制dist目录到服务器

toolset-frontend/dist 目录复制到:

C:\Users\Administrator\Desktop\toolset\frontend\dist

5. 启动Nginx

cd C:\nginx
nginx.exe

6. 验证部署

访问以下地址测试:

  • 前端页面:http://101.35.132.175
  • API接口:http://101.35.132.175/api/health
  • 工具分类:http://101.35.132.175/api/tool-category/enabled

完整的部署命令

# 1. 重新打包前端
cd toolset-frontend
npm run build# 2. 复制dist到服务器目录(如果不在同一台机器)
# 将 dist 目录复制到 C:\Users\Administrator\Desktop\toolset\frontend\dist# 3. 启动Nginx
cd C:\nginx
nginx.exe# 4. 检查Nginx状态
tasklist | findstr nginx

验证步骤

1. 检查Nginx是否启动

netstat -an | findstr :80

2. 检查后端是否运行

netstat -an | findstr :8083

3. 测试API代理

curl http://localhost/api/health

常见问题解决

如果Nginx启动失败:

# 检查配置文件语法
nginx.exe -t# 查看错误日志
type C:\nginx\logs\error.log

如果端口80被占用:

# 查找占用80端口的进程
netstat -ano | findstr :80# 批量杀死进程
for /f "tokens=5" %a in ('netstat -ano ^| findstr :80') do taskkill /PID %a /F
# 终止占用进程
taskkill /PID <进程ID> /F

如果API代理不工作:

检查Nginx配置中的 proxy_pass 是否正确指向 http://127.0.0.1:8083/

管理Nginx

# 启动Nginx
nginx.exe# 停止Nginx
nginx.exe -s stop# 重新加载配置
nginx.exe -s reload# 查看Nginx进程
tasklist | findstr nginx
http://www.dtcms.com/a/365224.html

相关文章:

  • 性能测试-jmeter9-直连数据库
  • 深度学习篇---模型组成部分
  • 财务文档处理优化:基于本地运行的PDF合并解决方案
  • 【51单片机】【protues仿真】基于51单片机压力测量仪系统
  • wpf触发器
  • Dify 从入门到精通(第 73/100 篇):Dify 的高级 RAG 优化(高级篇)
  • 调制端Phase Shift Discriminator(PSD)算法原理
  • 数据结构从青铜到王者第二十话---Map和Set(3)
  • windows安装PostgreSQL 和TimescaleDB
  • 数据结构:顺序栈与链栈的原理、实现及应用
  • 集成 Node.js 模块:文件系统与网络操作
  • 深入理解 Java 集合框架:底层原理与实战应用
  • 数据结构——二叉树+堆
  • .gitignore 文件为什么无效。
  • 开学季,老师如何用阅兵仪式激励学生?
  • PNP具身解读——RSS2025论文加州伯克利RLDG: 通过强化学习实现机器人通才策略提炼。
  • 在DDPM(扩散模型)中,反向过程为什么不能和前向一样一步解决,另外实际公式推导时反向过程每一步都能得到一个预测值,为什么还要一步一步的推导?
  • GEM5学习(4): 运行全系统模式的ARM系统
  • Docker 运行 PolarDB-for-PostgreSQL 的命令,并已包含数据持久化配置
  • 梅赛德斯-AMG PETRONAS F1车队携手SAP Cloud ERP:以数字化驱动精确与高效
  • HTML全屏功能实现汇总
  • 缠论笔线段画线,文华财经期货指标公式,好用的缠论指标源码
  • 从全栈开发到微服务架构:一位Java工程师的实战经验分享
  • 突破闭集限制:3D-MOOD 实现开集单目 3D 检测新 SOTA
  • Cesium 实战 - 自定义纹理材质 - 箭头流动线(图片纹理)
  • Corona 13 渲染器安装与使用教程(适用于3ds Max 2016–2026)
  • 【LeetCode热题100道笔记】搜索旋转排序数组
  • 认知诊断模型发展与NeuralCD框架笔记
  • Springboot3+SpringSecurity6Oauth2+vue3前后端分离认证授权
  • 七、面向对象技术