目前軟件架構都比較流行前后端分離,前后端的分離也實現了前后端架構的分離,帶來的好處 —— 整個項目的開發權重往前移,實現真正的前后端解耦,動態資源和靜態資源分離,提高了性能和擴展性。
通常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共享。