nginx部署前端項目同時做負載均衡轉發請求后端多台服務


看不懂你打我。

前言:其實配置非常簡單,只是思路沒搞通走了一點點彎路,這里記錄下,希望大家不要踩坑,這篇文章給你們白嫖。

場景:有一台SLB做負載均衡轉發前端服務,兩台ECS做項目部署機子,分別部署前端和后端項目,就是A機子部署前端,也部署后端,B機子同理。SLB用來做前端轉發。(注:slb可以添加不同的端口來做其他的轉發配置,但我們這里沒有這樣用)

需求:需要請求A機子時需要負載分發到A后端或者B后端,請求B機子時候負載到A機子的服務或者B機子的后端服務。

 

 

我畫了項目大致請求流程圖,圖上slb的可不用看,我們主要看nginx配置。

注意:我們需要在前端項目ip那邊配置特定的標識,即例如在請求后端的接口加上  /api ,或者其他的 /testApi...隨便都可以,只要分得清,最好命名規范)

那么我部署上去的 ip就為:http://172.1.1.1/api ,將前端打包部署上去到A機子。

把ip改為:http://172.1.1.2/api,再將前端打包,部署到B機子上去。

這樣就能使得每次可以用A機子或者B機子做負載均衡轉發后端請求了。

 

 

 

 

 

 

接下來配置nginx,兩台的配置一樣

server {
    listen       80;
    server_name  localhost;
  #這是配置前端項目地址 location / { root /etc/nginx/html/dist; index index.html index.htm;     try_files $uri /index.html; #這個用來防止刷新頁面404 } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }   #這里是配置負載均衡 location ^~/api {
      #添加請求頭什么的,通過F12可以響應頭那邊可以看到自己配置的這些頭部內容,我這里暫時不用就注釋了 # add_header Access
-Control-Allow-Origin *; # add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; # add_header Access-Control-Allow-Headers 'Cache-Control,Content-Type,Authorization,id_token'; if ($request_method = 'OPTIONS') { return 204; } # 前端調用接口時有/api的url都會轉發到后端(loadbalance為上面upstream關鍵字后面的名字) proxy_pass http://loadbalance; rewrite ^/api/(.*) /$1 break; #注意:這里需要重寫/api為空因為這個/api是我們在前端項目寫的標識,手動添加上去的
} } #這里添加兩個轉發的地址 upstream loadbalance { server
172.1.1.1:9000 weight=1; #weight用來配置權重,即nginx分發請求到這里的次數占比 server 172.1.1.2:9000 weight=1; }

 

總結:1、需要在前端訪問后台接口的處,自己加特定標識做轉發識別,2、需要重寫這個標識,把他清空

結尾:一定需要特別注意的是,要在前端項目手動配置這個標識,然后請求到nginx監聽的端口,通過nginx做這個負載轉發接口!最開始我沒注意,直接配到了后端的9000端口,給自己挖坑了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM