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.pswp.cn/pingmian/73376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73376.shtml
英文地址,請注明出處:http://en.pswp.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的基本概念、機器學習的原理…