目前軟件架構都比較流行前后端分離,前后端的分離也實現了前后端架構的分離,帶來的好處 —— 整個項目的開發權重往前移,實現真正的前后端解耦,動態資源和靜態資源分離,提高了性能和擴展性。
通常SpringBoot與vue 進行前后端分離,主要有兩種方式:
1.打包(npm run build命令)vue項目出來的dist文件夾拷貝到springboot項目的static文件目錄,部署到tomcat即可。
2.利用nginx的反向代理。
本文主要講解第二種
首先打包前端項目到指定目錄:E:\fjgh\dist
然后部署后端項目到不同的Tomcat服務器,請求地址分別是:
http://localhost:8086/un/
http://localhost:8087/un/
重點是nginx配置
1.在配置文件http模塊添加后端服務負載均衡策略配置,常用有三種策略,本例使用默認輪詢
#負載均衡配置:輪詢(默認) 指定權重 IP綁定;
upstream fjghmultiple{
server localhost:8086;
server localhost:8087;
}
2.添加server配置
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
root E:\fjgh\dist ;#vue項目的打包后的dist
index index.html index.htm;
#開啟gzip壓縮,降低傳輸流量,減少響應時間
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml application/json ;
gzip_vary on;
}
location /un/ {
#代理后端服務
proxy_pass http://fjghmultiple/un/;
}
}
3.通過start nginx 命令啟動nignx 訪問地址 http://localhost 即可
補充:多個后台需要考慮用戶登錄狀態同步的問題,我們使用的是通過spring-session實現session共享:當web服務器接收到http請求后,請求進入到對應的Filter進行過濾,原表需要由web服務器創建會話的過程轉交給spring-session進行創建,本來創建的會話保持在web服務器內存中,通過spring-session創建的會話信息可以保存在第三方的服務中,比如:redis,mysql等。各個web服務器之間通過連接第三方服務來共享數據,實現session共享。
