摘要:關于咱們先了解在開發過程中的主要作用解決跨域負載均衡一解決跨域如果要理解什么是跨域廣義上的跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源。標記為備份服務器。當主服務器不可用時,將傳遞與備份服務器的連接。
關于nginx,咱們先了解nginx在開發過程中的主要作用
nginx解決跨域
nginx負載均衡
一、nginx解決跨域如果要理解什么是跨域
廣義上的跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源。即瀏覽器的同源策略/SOP限制引起的跨域也屬于在內;
那么什么是同源策略呢?
同源策略/SOP(Same origin policy)是一種約定,由Netscape公司1995年引入瀏覽器,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,瀏覽器很容易受到XSS、CSFR等攻擊。同源策略即: 協議+域名+端口"三者相同
常見的跨域場景如下:
URL 說明 是否允許通信 http://www.baidu.com/hello.js http://www.baidu.com/world.js 同一域名,不同文件或路徑 允許(無跨域) http://www.baidu.com/hello/world.js http://www.baidu.com:8000/hello.js http://www.baidu.com/hello.js 同一域名,不同端口 不允許(有跨域) http://www.baidu.com/hello.js https://www.baidu.com/world.js 同一域名,不同協議 不允許(有跨域) http://www.baidu.com/hello.js http://192.168.22.128/world.js 域名和域名對應ip 不允許(有跨域) http://baidu.com/hello.js http://x.baidu.com/hello.js 主域相同,子域不同 不允許(有跨域) http://www.baidu.com/hello.js http://www.baidu.com/hello.js http://www.bai.com/world.js 不同域名 不允許(有跨域)
1. jsonp解決跨域 2. document.domain + iframe解決跨域 3. nginx代理解決跨域 4. nodejs中間件代理解決跨域重點來了 nginx代理解決跨域;
server { listen 80; server_name localhost; //前端域名 具體原理解釋在下方 location / { // location / 代理所有請求 而如果是 location /api 則匹配到有/api 前綴的請求才會代理 proxy_pass www.baidu.com; // 服務端域名 } }
前端server域名是localhost
服務器server域名是www.baidu.com
根據瀏覽器的SOP/同源策略 localhost對www.baidu.com發起請求一定會出現跨域問題;但現在只要我們啟動nginx服務器把server_name設置成前端的域名,
此時前端發起的請求相當于是localhost對localhost發起,這樣是不會引起跨域的;但真實情況是,nginx對localhost的請求代理回 www.baidu.com
這里贅述一下什么是代理;
代理是在服務器和客戶端之間假設的一層服務器(中間服務器),代理將接收客戶端的請求并將它轉發給服務器,然后將服務端的響應轉發給客戶端。
代理分為正向代理和反向代理:具體區別自行百度...二、nginx負載均衡
nginx是通過把請求分發到服務器列表來實現負載均衡的;具體實現如下:
upstream balance.com{ server 192.168.2.100:42000; server 192.168.2.101:42000; server 192.168.2.102:42000; } server { server_name fe.server.com; listen 80; location /api { proxy_pass http://balance.com; } }
上面的配置只是指定了nginx需要轉發的服務端列表,并沒有指定分配策略。
nginx負載均衡策略1.輪詢策略
> 輪詢策略是默認的策略,把每個請求按順序逐一分配到不同的server,如果server掛掉,能自動剔除
upstream balance.com{ server 192.168.2.100:42000; server 192.168.2.101:42000; server 192.168.2.102:42000; }
2.最少連接數策略
把請求優先分配給連接數最少的server,可以平衡每個隊列的長度;
upstream balance.com{ least_conn; server 192.168.2.100:42000; server 192.168.2.101:42000; server 192.168.2.102:42000; }
3.最快響應時間策略
優先分配給響應時間最短的服務器。
upstream balance.com { fair; server 192.168.2.100:42000; server 192.168.2.101:42000; server 192.168.2.102:42000; }
4.權重策略
使用weight來指定server訪問比率,weight默認是1。訪問率比例等于權重比例;
upstream balance.com{ server 192.168.2.100:42000 weight=1; server 192.168.2.101:42000 weight=2; server 192.168.2.102:42000 weight=3; }
5.客戶端ip綁定 ip_hash
每個請求會按照訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一server進行處理,可以解決session的問題。如果server掛掉,能自動剔除。
upstream balance.com{ ip_hash; server 192.168.2.100:42000 weight=1; server 192.168.2.101:42000 weight=2; server 192.168.2.102:42000 weight=3; }
backup 標記為備份服務器。當主服務器不可用時,將傳遞與備份服務器的連接。
upstream balance.com{ server 192.168.2.100:42000 backup; server 192.168.2.101:42000; }
本文介紹的是基礎功能,如果想了解更多請轉nginx文檔
以上是博主目前了解和使用到的一些技巧和知識啦,至于關于nginx部署后404問題請看@安靜Eno| vue框架下部署上線后刷新報404問題解決方案
尊重原著 文章轉自@安靜Enonginx部署/代理/跨域
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40446.html
摘要:三反向代理解決的原理將安裝在本地,然后將項目部署于下,這樣訪問本地項目時用本地項目即可訪問。這樣瀏覽器之間的請求完全滿足瀏覽器域名協議端口相同的同源策略,可在不改變后臺接口的情況下避免跨域問題。 一、問題背景說明: 編寫移動前端頁面時需要訪問后臺系統接口。前端項目在本地(個人辦公電腦)開發,后臺接口存放后生產的后臺服務器,本地的ajax請求無法直接訪問后臺接口,也就是遇到了跨域問題...
摘要:三反向代理解決的原理將安裝在本地,然后將項目部署于下,這樣訪問本地項目時用本地項目即可訪問。這樣瀏覽器之間的請求完全滿足瀏覽器域名協議端口相同的同源策略,可在不改變后臺接口的情況下避免跨域問題。 一、問題背景說明: 編寫移動前端頁面時需要訪問后臺系統接口。前端項目在本地(個人辦公電腦)開發,后臺接口存放后生產的后臺服務器,本地的ajax請求無法直接訪問后臺接口,也就是遇到了跨域問題...
閱讀 2753·2021-11-22 14:45
閱讀 896·2021-10-15 09:41
閱讀 1058·2021-09-27 13:35
閱讀 3662·2021-09-09 11:56
閱讀 2626·2019-08-30 13:03
閱讀 3191·2019-08-29 16:32
閱讀 3296·2019-08-26 13:49
閱讀 766·2019-08-26 10:35