公司最近在重構專案,使用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....