前端打包配置+nginx配置實現部署及部署地址帶特定前綴的幾種方式

前端打包后要部署到服務器,在瀏覽器中可以通過url訪問到我們開發的系統,通過nginx代理在工作中是一種很常用的方式。

這里以本地為例,把本地電腦當作一個服務器,實現普通部署、帶特定前綴等
前端使用vue-cli+vue作為例子
以下內容都只解決在不同情況下請求前端打包文件404問題,如果在index.html中有引入public下的靜態資源,可以使用**<%= BASE_URL %>**來代替相對路徑或絕對路徑,<%= BASE_URL %>對應的就是vue.config.js中publicPath
在這里插入圖片描述

1.hash路由+不帶前綴的普通部署

效果如下:地址為ip:port/#/hashPath形式(因為用的是默認的端口80所以可以不寫端口號)
在這里插入圖片描述
這種是最簡單的部署方式。部署時不使用任何前綴,且前端使用的hash路由模式,不用擔心后面訪問資源404問題。
配置:

  1. 前端vue.config.js配置中不配置publicPath或者設置publicPath:'/'。對應的如果使用webpack.config.js,不設置output.publicPath或者設置為’/'。
  2. 打包生成dist文件,放到任意自己期望的目錄下面
  3. 配置nginx
    示例:
    在這里插入圖片描述
    其中:
    location:nginx的塊級指令,用來匹配url請求。這里我們打算把前端部署在不帶前綴的地址上,故直接使用 / 。關于location更多的配置可以參考https://zhuanlan.zhihu.com/p/137042956?utm_id=0
    root:用于指定文件系統中某個目錄作為請求的根目錄(還有一個alias與其類似,后面解釋)
    index: 用于指定網站初始頁 默認值為index index.html后面可以跟多個值用 空格 隔開,更多配置和解釋可以參考官網/其他

2. hash路由+特定前綴

效果如下:地址為ip:port/prefixPath/#/hashPath形式
在這里插入圖片描述

配置方式1:

  1. 前端打包配置publicPath設置為 ./
    ./代表當前目錄下,這樣設置可以適配在不同環境下想要為系統設置不同前綴的問題,不論設置什么前綴都能正確匹配
    在這里插入圖片描述

  2. 打包生成dist文件,放到任意自己期望的目錄下面

  3. 配置nginx:示例:
    在這里插入圖片描述
    alias:用于將請求映射到另一個目錄或文件上(用于將請求的URL路徑與文件系統路徑進行映射)

alias和root的區別:

如果上面仍然使用root訪問url時得到的結果將是404 Not Found
在這里插入圖片描述
root: 指定文件系統中某個目錄作為請求的根目錄,Nginx會在該目錄下尋找請求的文件,最后請求的路徑為root指定的URL + location上的URL
alias:將請求映射到另一個目錄或文件上,最后請求的路徑為alias指定的URL,即loaction后面的路徑將被忽略。

配置方式2:

如果部署的前綴固定,可以設置publicPath為固定路徑

  1. 配置publicPath為固定地址(這個地址必須和nginx配置的location 后面的url路徑保持一致
    在這里插入圖片描述

  2. 同配置方式1

  3. 同配置方式1

3.history模式

history模式相對hash模式配置要更加復雜,稍微不注意可能就會出現404
publicPath的幾種配置

1. ‘./’ 表示 與當前路徑處于同一級

1.1 瀏覽器地址為localhost/tenant-mgt/ (注意是以/結尾的) 則跟tenant-mgt/同級,相當于是tenant-mat的下一級,因為tenant-mgt后面有一個/
在這里插入圖片描述
這情況下請求的地址為:
在這里插入圖片描述

1.1 那如果此時tenant-mgt/ 中/后面還有一個路徑呢 如loacalhost/tenant-mgt/index 那么上面vue.min.js的請求地址是什么?
答案是和上面一樣,即還是loacalhost/tenant-mgt/vendor/vue.min.js 因為和index同級就是相當于tenant-mgt的后面一級
1.2 那如果tenant-magt后面沒有/呢,即localhost/tenant-mgt。這個時候./和/tenant-mgt同級即loaclhost/這一級
則請求的地址就變成了loacalhost/vendor/vue.min.js
所以最后是不是以 / 結尾很重要

  1. ‘/’表示絕對地址,無論部署的地址和瀏覽器中顯示的地址是什么,請求靜態文件的地址都是根路徑

3.1history模式+不帶固定前綴

1.前端打包配置publicPath為 ‘/’(重要,這里不能設置為相對地址,否則js等文件請求將會帶上瀏覽器url上面的地址,導致請求404)
在這里插入圖片描述

2.nginx配置為
在這里插入圖片描述

location / {root   D:\frontend\console\dist(前端打包路徑);index  index.html index.htm;try_files $uri $uri/ /index.html(必須,否則刷新時會404;
}

例:下圖中/login是訪問系統后跳轉到的路由路徑
在這里插入圖片描述

3.1history模式+固定前綴

假設我們需要部署的地址的前綴是/test
1.設置路由的base值為/test
在這里插入圖片描述

2.設置publicPath為 /
在這里插入圖片描述

3.nginx配置

location / {root   D:\frontend\console\dist(前端打包路徑);index  index.html index.htm;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35931.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第2次作業

問題&#xff1a;cs與msf權限傳遞&#xff0c;以及mimikatz抓取win2012明文密碼。 一、CS與MSF權限傳遞 CS&#xff08;Cobalt Strike&#xff09;和MSF&#xff08;Metasploit Framework&#xff09;是兩種常用的滲透測試工具&#xff0c;它們都支持在滲透過程中傳遞權限。以…

1.3 Sqoop 數據同步工具詳細教程

Apache Sqoop 是一個開源工具&#xff0c;用于在 Apache Hadoop 和關系型數據庫&#xff08;如 MySQL、Oracle、PostgreSQL 等&#xff09;之間高效傳輸數據。Sqoop 可以將結構化數據從關系型數據庫導入到 Hadoop 的 HDFS、Hive 和 HBase 中&#xff0c;也可以將數據從 Hadoop …

git 多分支實現上傳文件但避免沖突檢測

文章目錄 背景實現步驟 背景 對于某些通過命令生成的配置文件&#xff08;如 TypeScript 類型文件等&#xff09; 實現步驟 1

背包問題(動歸)

目錄 問能否能裝滿背包&#xff08;或者最多裝多少&#xff09;&#xff1a;dp[j] max(dp[j], dp[j - nums[i]] nums[i]); 對應題目如下&#xff1a; 416.分割等和子集 (物品正序&#xff0c;背包倒序) 問裝滿背包有幾種方法&#xff1a;dp[j] dp[j - nums[i]] &#xff…

父級設置最大寬度,其寬度自適應子級中的內容

父級寬度自適應 1.父級限制最大寬度 2.子級豎著排放,每列的個數明確 3.父級的寬度跟隨子級元素的個數變化寬度 tips: 因為父級要設置"background-color"屬性,所以父級DIV必須要給明確的寬高,這就意味著純CSS自適應寬度無法做到(好吧,是我做不到) HTML <temp…

茴香豆接入微信個人助手部署

將rag產品接入微信工作群&#xff0c;自動回答問題&#xff0c;香嗎&#xff1f;&#xff1f; let‘s go 1、打開openxlab平臺&#xff0c;找到茴香豆web產品應用中心-OpenXLab 點擊進入&#xff0c;設置知識庫名字和密碼 2、上傳知識庫文件和編輯正反例等 3、然后進行測試問答…

電腦開機之后屏幕沒有任何顯示?怎么檢查?

前言 最近有很多小伙伴來咨詢&#xff0c;自己的電腦開機之后&#xff0c;屏幕真的是一點顯示都沒有&#xff0c;只有CPU風扇在轉。 這個情況小白經常經常經常遇到&#xff0c;所以寫一篇關于這個問題的排查教程。按照這個教程來排查&#xff0c;除非真的是硬件損壞&#xff…

算法第八天:leetcode234.回文鏈表

給你一個單鏈表的頭節點 head &#xff0c;請你判斷該鏈表是否為回文鏈表。如果是&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 示例 1&#xff1a; 輸入&#xff1a;head [1,2,2,1] 輸出&#xff1a;true示例 2&#xff1a; 輸入&#xff1a;head [1,2…

面向對象編程——python

目錄 一、面向對象編程 1.1 類和對象 1.2 繼承 1.3 封裝 1.4 多態 1.5 Python中的面向對象編程 二、類、對象和變量 2.1 類&#xff08;Class&#xff09; 2.2.1 類的屬性&#xff08;Class Attributes&#xff09; 2.2.2 類的方法&#xff08;Class Methods…

對類與對象的(二)補充

1.Date這樣的構造函數 析構函數 拷貝構造 默認構造函數有三種 &#xff1a;全缺省的構造函數 無參的構造函數 和編譯器默認生成的構造函數 class Date {pubilc&#xff1a;void Print&#xff08;&#xff09; { } private&#xff1a;//全缺省的int year1;int month1;int …

二叉樹的廣度優先搜索(層次遍歷)

目錄 定義 層序遍歷的數據結構 實現過程簡述 具體代碼 定義 層序遍歷就是從左到右一層一層地遍歷二叉樹。 層序遍歷的數據結構 層序遍歷需要借用一個輔助數據結構實現&#xff0c;由于隊列具有先進先出的特性&#xff0c;符合一層一層遍歷的邏輯&#xff0c;而棧先進后出…

PHP框架之Laravel框架

Laravel框架詳解 Laravel&#xff0c;作為一款廣受歡迎的PHP Web開發框架&#xff0c;以其優雅、簡潔的語法和強大的功能特性&#xff0c;贏得了全球眾多開發者的青睞。下面&#xff0c;我們將從Laravel的特點、應用案例以及具體的框架使用等方面進行詳細解析。 一、Laravel框…

甲子光年專訪天潤融通CEO吳強:客戶經營如何穿越低速周期?

作者&#xff5c;陳楊、編輯&#xff5c;栗子 社會的發展從來都是從交流和聯絡開始的。 從結繩記事到飛馬傳信&#xff0c;從電話電報到互聯網&#xff0c;人類的聯絡方式一直都在隨著時代的發展不斷進步。只是傳統社會通信受限于技術導致效率低下&#xff0c;對經濟社會產生影…

LLaMA:挑戰大模型Scaling Law的性能突破

實際問題 在大模型的研發中,通常會有下面一些需求: 計劃訓練一個10B的模型,想知道至少需要多大的數據?收集到了1T的數據,想知道能訓練一個多大的模型?老板準備1個月后開發布會,給的資源是100張A100,應該用多少數據訓多大的模型效果最好?老板對現在10B的模型不滿意,想…

退市新規解讀—財務類強制退市

一、退市風險警示&#xff1a;第一年觸及相關指標 上市公司最近一個會計年度觸及下列退市風險指標之一&#xff0c;公司股票或存托憑證被實施退市風險警示(*ST)&#xff1a; 第1項 組合類財務指標 僅發行A股或B股&#xff0c;最近一個會計年度或追溯重述后最近一個會計年度 …

Leetcode 102.目標和

給定一個正整數數組 nums 和一個整數 target 。 向數組中的每個整數前添加 ‘’ 或 ‘-’ &#xff0c;然后串聯起所有整數&#xff0c;可以構造一個 表達式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 ‘’ &#xff0c;在 1 之前添加 ‘-’ &…

C#面:C#屬性能在接口中聲明嗎?

在C#中&#xff0c;接口是一種定義了一組方法、屬性和事件的類型。在接口中&#xff0c;只能聲明方法、屬性和事件的簽名&#xff0c;而不能包含字段、構造函數或實現代碼。因此&#xff0c;C#屬性不能直接在接口中聲明。 然而&#xff0c;你可以在接口中定義屬性的簽名&#…

VMware的具體使用

&#x1f4d1;打牌 &#xff1a; da pai ge的個人主頁 &#x1f324;?個人專欄 &#xff1a; da pai ge的博客專欄 ??寶劍鋒從磨礪出&#xff0c;梅花香自苦寒來 目錄 一&#x1f324;?VMware的安…

用戶登錄錯誤次數太多鎖定賬號

當用戶登錄驗證碼錯誤次數太多時&#xff0c;需要限制用戶在10分鐘之內不能再次登錄。 限制方案&#xff1a; 1.通過Redis ZSet key可以設置為用戶名&#xff0c;value可以設置為UUID&#xff0c;score設置為當前時間戳 每次用戶登錄時&#xff0c;通過 rangeByScore 查詢對…

Ubuntu22安裝PyCharm

下載&#xff08;社區版&#xff09; 官網下載地址 解壓 sudo tar -xzvf pycharm-community-2024.1.4.tar.gz 軟件移動到指定目錄下&#xff08;根據不同版本修改&#xff09; sudo mv pycharm-community-2024.1.4/ /usr/local/PyCharm/運行 cd /usr/local/PyCharm/pycha…