nginx前後端分離遇到的一些坑

2021-08-29 07:12:13 字數 1783 閱讀 8238

公司最近在重構專案,使用nginx做前端伺服器,**,負載均衡,限速等等,遇到了一些坑,記錄下來.

#前端頁面伺服器

server

}

讓nginx攔截80埠,然後直接去nginx根目錄下的html/wanmor_cloud_platform_frontend      wanmor_cloud_platform_frontend 就是前端專案名.

當然root也可以寫絕對路徑,  

root  /home/winnersoft/server/wanmo-soft/wanmor_cloud_platform_frontend/ ;

index後面就是首頁的路徑.  

這樣訪問ip就可以訪問web前端的靜態頁面了.

如果前端資源和後端資源不在乙個專案的話,瀏覽器會攔截前端對後台的請求.如果是開發的話,配置一下瀏覽器就好了

但是如果是正式伺服器,就需要改nginx配置

用到的是nginx的**

server 

#新增攔截路徑和根目錄

location /

}

讓nginx攔截所有帶/api/的請求,**到後端伺服器,就可以解決跨域的問題.

比如前端ajax 請求的url為

經過nginx**之後變成了

這樣配置之後,在前端所有的請求加上/api/

這樣就可以欺騙瀏覽器和伺服器,解決跨域的問題

3.但是這樣又會存在另外乙個問題,就是使用者ip的問題,這種反向**的方法原理是使用者把請求交給nginx,nginx再請求後端伺服器,後端獲取的使用者ip是nginx的ip

有獲取使用者ip的需求需要改nginx配置,   和後端**

server 

#新增攔截路徑和根目錄

location /

}

在頭部資訊裡新增

proxy_set_header x-real-ip $remote_addr; 這樣nginx就會帶著使用者真實ip去訪問後端伺服器,

後端**也需要修改

string userip = request.getheader("x-real-ip");

這樣就是獲取nginx傳過來的使用者真實ip

如果前端請求涉及到資源上傳,資源大小過大的話nginx會攔截請求

需要ngin改下請求大小的限制

#新增攔截路徑和根目錄

location / }}

在http下面新增

client_max_body_size 100m;

可以將請求大小最大值限制在100m,大家可以根據實際情況配置

error_page 500 502 503 504 /50x.html;

location = /50x.html }}

在http 下面新增

limit_conn_zone $binary_remote_addr zone=one:10m;

然後在service下面location 攔截.apk的請求

root 是靜態.apk資源的檔案路徑

autoindex on; 表示可以訪問目錄列表

前後端分離的一些想法

本文主題應該是前後端分離,我上面的建議是個徹底方案,要革以前系統的命,對存量系統那該如何處理,答案還是重構 想方設法逐步減少已經發現的前後端耦合度高的問題,這個跟我之前的建議就是小重構和大重構的區別,如果有人覺得我上面建議合適,前端組應該馬上提供一套這樣的框架出來,這樣後面的新系統就不會在迴圈前面的...

前後端分離的一些問題

restful架構是目前比較流行的一種網際網路軟體架構,在此架構之下的瀏覽器前端和手機端能共用後端介面。但是涉及到js跨域呼叫介面總是很頭疼,下邊就跟著chrome的報錯資訊一起來解決一下。假設 前端網域名稱為front.ls la.me,後端網域名稱為api.ls la.com。前端需要訪問的介面...

nginx實現前後端分離

參考 路徑 nginx conf nginx.conf2.1 設定前端 位置location 2.2 配置後台請求攔截 後台跳轉 攔截所有前端 以 api 開始的請求 到 後端服務 http localhost 8080 backend project name api location api2....