Vue项目与云管平台Nginx部署笔记

Vue项目与云管平台Nginx部署笔记

一、项目架构说明

  1. footAdmin云管前端

    • Vue2 + Webpack 构建,部署路径:/usr/share/nginx/html/footAdmin

    • 使用npm run build生成/dist目录,然后将dist目录下面的所有文件,上传到虚拟机/usr/share/nginx/html/footAdmin目录下面

    • # 发送编译后的文件到测试环境运行
      scp -r dist/* root@192.168.2.109:/usr/share/nginx/html/footAdmin
      
  2. footAdminServer云管后台

    • Node.js服务,端口7071,处理管理后台业务逻辑
  3. footApiServer专用API服务

    • SpringBoot服务,端口7072,提供标准化API接口
    • 已配置负载均衡集群(示例节点:192.168.2.109:7072

二、Nginx核心配置优化

1. 全局性能配置(http模块)

# 进程与连接管理
worker_processes auto;  # 自动匹配CPU核心数
worker_rlimit_nofile 65535;  # 文件描述符限制需与ulimit -n一致events {use epoll;  # Linux高效I/O模型worker_connections 65535;  # 单进程最大连接数multi_accept on;  # 批量接收新连接
}# 压缩传输优化
gzip_static on;  # 优先使用预压缩文件(需提前生成.gz)
gzip on;
gzip_types text/plain application/json text/css application/javascript;
gzip_proxied any;

2. 前端服务配置(Server模块)

server {listen 5000;server_name localhost;# 静态资源服务location / {root /usr/share/nginx/html/footAdmin;index index.html;try_files $uri $uri/ /index.html;  # 处理Vue路由# 缓存策略expires 365d;add_header Cache-Control "public, no-transform";access_log off;  # 静态资源不记录日志}# 管理后台代理location /admin/ {proxy_pass http://footAdminServer:7071/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}# API服务负载均衡location /foot/ {proxy_pass http://footApi/;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';}
}

3. 负载均衡集群配置

upstream footApi {least_conn;  # 最小连接数策略server 192.168.2.109:7072 weight=4 max_fails=3 fail_timeout=10s;# 扩展节点示例:# server 192.168.0.106:7072 weight=3;# server 10.0.0.5:7072 backup;
}

三、专项优化策略

1. 安全加固

server_tokens off;  # 隐藏Nginx版本
client_max_body_size 20M;  # 限制文件上传大小
limit_conn perip 100;  # 单IP并发限制# 防盗链配置
location ~* \.(jpg|png|js|css)$ {valid_referers none blocked *.yourdomain.com;if ($invalid_referer) {return 403;}
}

2. 日志管理

# 分服务记录日志
access_log /var/log/nginx/footAdmin_access.log combined buffer=16k;
error_log /var/log/nginx/footAdmin_error.log warn;# 健康检查日志隔离
location /nginx_status {stub_status;access_log off; 
}

3. 微缓存策略(动态内容)

# API响应缓存
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=api_cache:10m max_size=1g inactive=1h;location /foot/ {proxy_cache api_cache;proxy_cache_valid 200 302 10m;proxy_cache_methods GET HEAD;
}

四、部署流程示例

# Vue项目部署
npm install
npm run build
rsync -avz dist/ nginx-server:/usr/share/nginx/html/footAdmin# 预压缩静态文件
find /usr/share/nginx/html/footAdmin -type f \( -name "*.js" -o -name "*.css" \) -exec gzip -k {} \;# Nginx配置重载
nginx -t && nginx -s reload

五、监控建议

  1. 连接数监控
    netstat -ant | grep :5000 | wc -l

  2. 缓存命中率分析

    grep -o "HIT\|MISS\|EXPIRED" /var/log/nginx/footAdmin_access.log | sort | uniq -c
    
  3. 性能压测工具

    ab -n 5000 -c 200 http://localhost:5000/foot/api/healthcheck
    

注:本配置基于Nginx 1.25.3版本,需配合系统级优化(如内核参数调整)实现最佳性能。实际部署时建议启用HTTPS并配置HTTP/2协议。

完整配置

# 静态文件预压缩优化
gzip_static on;  # 优先使用预压缩的.gz文件(避免重复压缩消耗CPU)【开启gzip压缩(如果静态文件已预压缩)】
gzip on;         # 启用动态内容压缩
gzip_types     text/plain text/javascript text/css text/xml application/javascript application/x-javascript application/xml application/json application/xml+rss; # 指定可压缩的 MIME 类型(覆盖默认配置)
gzip_proxied   any;  # 对所有代理请求启用压缩(包括携带Cookie和认证头的情况)# 负载均衡
upstream footApi {least_conn;  # 最小连接数调度策略(适用于长连接场景)server 192.168.2.109:7072 max_fails=4  fail_timeout=10 weight=4;# server 192.168.2.106:7072;  # 定义后端服务2(家庭开发环境的网关接口)# server XXX.XXX.XXX.XXX:7072;  # 定义后端服务3(公网服务器上的网关接口,用于上线部署)
}server {listen       5000;  # 监听5000端口,HTTP默认端口server_name  localhost;  # 绑定域名,处理通过该域名的请求# 设置该服务器的请求体大小限制为 20MBclient_max_body_size 20M;  # 允许最大上传 20MB 文件# 云管平台Web前端location / {root   /usr/share/nginx/html/footAdmin; # 前端资源目录index  index.html index.htm;            # 默认索引文件# alias /usr/share/nginx/html/footAdmin/;  # 指定静态资源目录【推荐】【root和alias任选其一】# 如果需要添加缓存控制,可以在此处设置,例如:# expires 30d;  # 设置缓存30天}# 云管平台APIlocation /admin/ {proxy_pass http://192.168.2.109:7071/; # 固定后端服务地址proxy_redirect default;                # 保留响应头重定向信息}# 服务端APIlocation /foot/ {#负载均衡proxy_pass http://footApi/;            # 负载均衡集群入口proxy_redirect default;# 建议添加的健康检查头:# proxy_set_header Host $host;# proxy_set_header X-Real-IP $remote_addr;}#        # 云管平台Web前端【不推荐】【root和alias任选其一】
#        location /truestyle {
#            # 不会将location路径拼接到/dist后面
#            alias   /project/vue/dist;
#            index  index.html index.htm;
#        }#        location /api/ {
#           proxy_pass http://192.168.0.109:7072/;
#           proxy_redirect default;
#        }# 错误处理配置error_page 500 502 503 504 /50x.html; # 统一错误页面(提升用户体验)location = /50x.html {root /usr/share/nginx/html;  # 错误页面存放路径}# 日志配置,可选:根据需求设置日志记录格式access_log /var/log/nginx/footAdmin_access.log combined buffer=16k;  # 带缓冲的访问日志(减少磁盘I/O)error_log /var/log/nginx/footAdmin_error.log warn; # 警告级别错误日志
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java常用数据转换

1. List与数组互转 ArrayList<String> list new ArrayList<>(); String[] array list.stream().toArray(String[]::new); String[] array1 {"apple", "banana", "orange"}; List<String> list1 Arrays.stre…

JAVA学习--java数组--打印稀疏数组和稀疏数组的还原

1.题目描述 2.代码实现 打印二维数组 public class test04 {public static void main(String args[]){//1.创建一个二维数组11*11&#xff0c;0代表没有棋子&#xff0c;1代表黑&#xff0c;2代表白棋int[][] array1new int[11][11];array1[1][2]1;array1[2][3]2;//输出原…

Java 标准注解(内置注解+元注解)的详细说明及使用场景

以下是 Java 标准注解&#xff08;内置注解&#xff09;的详细说明及使用场景&#xff1a; 1. 核心标准注解 (1) Override 用途&#xff1a;标记一个方法覆盖父类的方法或实现接口的抽象方法。约束&#xff1a; 若方法未正确覆盖/实现&#xff0c;编译器会报错。不能用于字段…

使用Python调用Jenkins Api之获取构建日志使用说明文档

简介 通过 Python 脚本自动化获取 Jenkins 构建日志&#xff0c;可以实现日志分析、错误监控、报告生成等功能。本文档将介绍以下方法&#xff1a; Python-Jenkins 库&#xff1a;官方推荐的 Python 客户端库 日志分页与流式处理&#xff1a;应对大日志文件场景 准备工作 …

Day20-前端Web案例——部门管理

目录 部门管理1. 前后端分离开发2. 准备工作2.1 创建Vue项目2.2 安装依赖2.3 精简项目 3. 页面布局3.1 介绍3.2 整体布局3.3 左侧菜单 4. Vue Router4.1 介绍4.2 入门4.3 案例4.4 首页制作 5. 部门管理5.1部门列表5.1.1. 基本布局5.1.2 加载数据5.1.3 程序优化 5.2 新增部门5.3…

Android java 设计封装增强型WebView组件

Android java 设计封装增强型WebView组件&#xff08;兼容Android 4.4&#xff09; * 特性&#xff1a; * 1. 全生命周期管理 * 2. 智能硬件加速 * 3. 链式配置API * 4. 安全下载管理 * 5. 全屏视频支持 public class EnhancedWebView extends WebView {private CustomWebChrom…

vue 点击放大,图片预览效果

背景&#xff1a; 在使用vue框架element组件的背景下&#xff0c;我们对图片的展示需要点击放大(单张)&#xff1b;如果是多张图片&#xff0c;要支持左右滑动查看多张图片(多张)。 单张图片放大&#xff0c;el-image图片组件&#xff0c;或者原生的img标签。 多张图片放大&…

HTTP代理的全面解读:什么是HTTP代理?HTTP代理的工作原理

在互联网大潮中&#xff0c;每一个请求和返回数据的背后&#xff0c;都离不开传输协议的支持&#xff0c;而HTTP协议无疑是最熟悉的网络通信基础之一。当我们谈到HTTP代理时&#xff0c;它不仅让浏览网络变得更高效&#xff0c;也为数据采集以及全球性远程任务提供了解决方案。…

学习笔记--基于Sa-Token 实现Java项目单点登录+同端互斥检测

目录 同端互斥登录 单点登录SSO 架构选型 模式二: URL重定向传播 前后端分离 整体流程 准备工作 搭建客户端 搭建认证中心SSO Server 环境配置 开放认证接口 启动类 跨域处理 同端互斥登录 同端互斥登陆 模块 同端互斥登录指&#xff1a;同一类型设备上只允许单地…

本地生活服务APP开发,市场发展全新商业机遇

随着移动互联网的快速发展&#xff0c;人们的消费和生活习惯发生了巨大改变&#xff0c;本地生活服务市场迎来了发展爆发期&#xff01;从外卖、团购等&#xff0c;人们越来越依赖通过手机APP解决日常生活中的各种需求。对于企业而言&#xff0c;一款完善、多样、便捷的本地生活…

当科技业成为系统性压榨的绞肉机

深夜的硅谷办公室依然灯火通明&#xff0c;键盘敲击声此起彼伏。一位程序员在Slack上收到主管的紧急需求&#xff1a;“这个功能明早必须上线。”他苦笑一声&#xff0c;关掉手机里名为“缓解焦虑”的冥想App——这已是本周第三次被迫服用公司提供的“心灵解药”。此刻&#xf…

代码随想录算法训练营第五十六天 | 108.冗余连接 109.冗余连接II

108. 冗余连接 卡码网题目链接&#xff08;ACM模式&#xff09;(opens new window) 题目描述 有一个图&#xff0c;它是一棵树&#xff0c;他是拥有 n 个节点&#xff08;节点编号1到n&#xff09;和 n - 1 条边的连通无环无向图&#xff08;其实就是一个线形图&#xff09;…

什么是索引?为什么要使用B树作为索引数据结构?

MySQL的事务特性 1.原子性:原子性就是这个事件要么执行完,要么没执行,不会存在中间状态,与C中华那个加锁避免多线程竞争是一个道理; 2.一致性:保持事件的操作对象双方某数据之和是不变的,就以转账为例,A转给B100块,那么A的余额多100,B的余额就必须少100; 3.隔离性:隔离就是独…

pyqt5报错:qt.qpa.plugin: Could not find the Qt platform plugin “xcb“(已解决)

我在使用pyqt库的时候报错&#xff1a; qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in \ "/mnt/private_disk/anaconda3/envs/aot-manip/lib/python3.8/site-packages/PyQt5/Qt5/plugins/platforms" even though it was found. This ap…

AI大模型全攻略:原理 · 部署 · Prompt · 场景应用

🚀 AI大模型全攻略:原理 部署 Prompt 场景应用 本文从基础原理到实践部署,再到 Prompt 工程与典型应用案例,全方位解析 AI 大模型的学习路径与使用方法,适合开发者、产品经理、技术爱好者等不同背景读者。 🧠 一、什么是 AI 大模型? AI 大模型(Large Language Mo…

2024年MathorCup数学建模D题量子计算在矿山设备配置及运营中的建模应用解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 D题 量子计算在矿山设备配置及运营中的建模应用 原题再现&#xff1a; 随着智能技术的发展&#xff0c;智慧矿山的概念越来越受到重视。越来越多的设备供应商正在向智慧矿山整体解决方案供应商转型&#xff0c;是否具备提供整体解…

Flink 流处理框架的核心特性

文章目录 事件时间支持Flink状态编程一、状态的类型1. 托管状态&#xff08;Managed State&#xff09;2. 原始状态&#xff08;Raw State&#xff09; 二、状态的管理和容错 Flink端到端的一致性1、检查点机制2、幂等3、事务 水位线窗口操作1、窗口类型2、窗口操作的时间语义 …

交换机(access端口)

任务&#xff1a;对access有更深入的理解 通过网盘分享的文件&#xff1a;交换机&#xff08;access&#xff09;.zip 链接: https://pan.baidu.com/s/1cMC6Na_1PLo6zOHazFplQQ?pwd23a5 提取码: 23a5 SW1 <Huawei>sys [Huawei]dis vlan The total number of vlans …

《鸟哥的Linux私房菜基础篇》---5 vim 程序编辑器

目录 一、vim程序编辑器的简介 二、命令模式快捷键&#xff08;默认模式&#xff09; 1、光标移动 2、编辑操作 3、搜索与替换 三、插入模式快捷键 四、底行模式快捷键&#xff08;按&#xff1a;进入&#xff09; 五、高级技巧 1、分屏操作 2、多文件编辑 3、可视化…

AI大白话(四):自然语言处理——AI是如何理解和生成人类语言的?

🌟引言: 专栏:《AI大白话》 AI大白话(一):5分钟了解AI到底是什么? AI大白话(二):机器学习——AI是怎么“学习“的? AI大白话(三):深度学习——AI的‘大脑‘是如何构建的? 大家好!欢迎回到"AI大白话"系列。前面我们聊了AI的基本概念、机器学习的原理…