Nginx同一端口部署多個(gè)前后端分離的vue項(xiàng)目完整步驟
前言
要用nginx容器部署多個(gè)前端項(xiàng)目可以采用監(jiān)聽(tīng)端口,和基于location配置兩種方法,
我的nginx是使用docker部署的,啟動(dòng)的時(shí)候沒(méi)有開(kāi)多余的端口,所以采用location配置
一個(gè)server下根據(jù)根路徑不同分別代理訪問(wèn)不同項(xiàng)目。
下面操練起來(lái),問(wèn):把大象放冰箱?總共需要幾步:三步!
第一步:Nginx 相關(guān)位置代碼
worker_processes 1;
events {
worker_connections 1024;
}
http {
client_max_body_size 100m;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
charset utf-8;
#項(xiàng)目一,同過(guò)ip:80直接訪問(wèn)
location / {
root /home/ruoyi-ui/dist; #dist文件的位置(根據(jù)自己dist包放置的位置決定)
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
#項(xiàng)目二,同過(guò)ip:80/project直接訪問(wèn)
location /project {
alias /home/zero/dist/;#注意第二個(gè)項(xiàng)目路徑是alias不是root,通常最佳實(shí)際是配置一個(gè)項(xiàng)目的根root,其他的文件夾則使用alias,畢竟alias更加靈活
try_files $uri $uri/ /project/index.html;
index index.html;
}
#第一個(gè)項(xiàng)目(前后端分離)反向代理來(lái)解決跨域問(wèn)題
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#后端服務(wù)端口地址:
proxy_pass http://10.10.11.79:8080/;
}
#第二個(gè)項(xiàng)目(前后端分離)反向代理來(lái)解決跨域問(wèn)題,要與第二個(gè)項(xiàng)目vue里面跨域的配置一致,沒(méi)有跨域問(wèn)題可以不配置
location /zero-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#后端服務(wù)端口地址:
proxy_pass http://10.10.11.79:8083/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
訪問(wèn)的時(shí)候是ip:端口號(hào)/+你配置的路徑:第一個(gè)路徑時(shí)候/,第二個(gè)路徑是/project
主要是兩個(gè)地方:
1.第二個(gè)local 后面/project 這個(gè)名字要與vue項(xiàng)目中index.js ,vue.config.js配置里面的名稱要一樣
2.跨域的問(wèn)題第四個(gè)local中l(wèi)ocation /zero-api/ 這個(gè)名字要與vue項(xiàng)目中vue.config.js文件中的跨域那個(gè)地方的配置要一致。
第二步:Vue 項(xiàng)目配置文件設(shè)置
1.修改index.js
修改路由,在src目錄下找到reouter目錄,添加base屬性:
base: '/project',
這個(gè)地方的名字需要與 nginx.conf 中第二個(gè)項(xiàng)目location的/后面的路徑名稱一致。

2. 修改vue.config.js
修改根目錄下的vue.config.js的publicPath路徑:
module.exports = {
publicPath: "/project'",
}
這個(gè)地方的名字需要與 nginx.conf 中第二個(gè)項(xiàng)目location的/后面的路徑名稱一致。
3. 處理前后端分離跨域問(wèn)題
沒(méi)有跨域需求可以不配,現(xiàn)在都是前后端分離了,用nginx分別代理前端和后端微服務(wù),解決跨越問(wèn)題。修改vue.config.js:
devServer: {
port: 80, //本地項(xiàng)目端口
proxy: {
"/zero-api": { // 這個(gè)意思是:原先以 /zero-api 開(kāi)頭的請(qǐng)求
target: 'http://10.10.11.79:8083', // 凡是以 /zero-api 開(kāi)頭的請(qǐng)求,通通請(qǐng)求這個(gè)服務(wù)器
changeOrigin: true, // 允許跨域
}
}
},
/zero-api 要與nginx 里面那個(gè)反向代理里面那個(gè)zero-api一致。
第三步:部署
修改nginx配置文件nginx.conf,把第二個(gè)vue項(xiàng)目打包放到目錄中/home/zero/dist,重啟nginx。
總結(jié)
到此這篇關(guān)于Nginx同一端口部署多個(gè)前后端分離的vue項(xiàng)目的文章就介紹到這了,更多相關(guān)Nginx部署多個(gè)前后端分離vue項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vite項(xiàng)目無(wú)法使用zangodb包裝器的解決方案
vite作為新一代工具鏈,具有很多便利之處,配置也非常簡(jiǎn)單,它很好地整合了Rollup和其他復(fù)雜的構(gòu)建項(xiàng),并提供了多種方向的典型腳手架模板,深受大家喜愛(ài),本文給大家介紹了如何解決vite項(xiàng)目無(wú)法使用zangodb包裝器的問(wèn)題,需要的朋友可以參考下2023-10-10
Vue學(xué)習(xí)之a(chǎn)xios的使用方法實(shí)例分析
這篇文章主要介紹了Vue學(xué)習(xí)之a(chǎn)xios的使用方法,結(jié)合實(shí)例形式分析了vue.js axios庫(kù)的功能及網(wǎng)絡(luò)請(qǐng)求相關(guān)操作技巧,需要的朋友可以參考下2020-01-01
解決Vue.js Devtools未檢測(cè)到Vue實(shí)例的問(wèn)題
在開(kāi)發(fā)Vue.js應(yīng)用時(shí),Vue.js Devtools是一個(gè)不可或缺的調(diào)試工具,然而,有時(shí)我們可能會(huì)遇到“Vue.js not detected”的提示,這意味著Vue.js Devtools未能成功識(shí)別和連接到我們的Vue應(yīng)用,本文將詳細(xì)解析這個(gè)問(wèn)題,并提供相應(yīng)的解決步驟與代碼示例,需要的朋友可以參考下2024-01-01
Vue3中的createGlobalState用法及示例詳解
createGlobalState 是 Vue 3 中一種管理全局狀態(tài)的簡(jiǎn)便方式,通常用于管理多個(gè)組件間共享的狀態(tài),由 @vueuse/core 提供的,允許創(chuàng)建一個(gè)響應(yīng)式的全局狀態(tài),本文給大家介紹了Vue3中的createGlobalState用法及示例,需要的朋友可以參考下2024-10-10
vue+vant使用圖片預(yù)覽功能ImagePreview的問(wèn)題解決
這篇文章主要介紹了vue+vant使用圖片預(yù)覽功能ImagePreview的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
vue中計(jì)算屬性computed和普通屬性method的區(qū)別小結(jié)
Vue.js中Computed和Methods是兩種常用的數(shù)據(jù)處理方式,本文主要介紹了vue中計(jì)算屬性computed和普通屬性method的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06

