1珊皿、正向代理:
比如國內(nèi)想要訪問一些被屏蔽的外部網(wǎng)站,需要先將請求發(fā)到代碼服務(wù)器缚陷,代理服務(wù)器收到請求后轉(zhuǎn)發(fā)到對象服務(wù)器,再將返回的數(shù)據(jù)返回給客戶端铁坎。
正向代理最大的特點是客戶端非常明確要訪問的服務(wù)器地址蜂奸;服務(wù)器只清楚請求來自哪個代理服務(wù)器,而不清楚來自哪個具體的客戶端硬萍;正向代理模式屏蔽或者隱藏了真實客戶端信息扩所。
2、反向代理:
比如我們訪問淘寶朴乖,由于訪問人數(shù)眾多祖屏,單個服務(wù)器無法處理超大的負(fù)載,所以后臺服務(wù)器部署會進行多臺服務(wù)器的分布式部署买羞。
但是我們的入口只有一個域名袁勺,請求會被發(fā)送到反向代理服務(wù)器,代理服務(wù)器通過一定的規(guī)則畜普,再分發(fā)到后臺的單個服務(wù)器期丰。
請求的來源也就是客戶端是明確的,但是請求具體由哪臺服務(wù)器處理的并不明確了吃挑,nginx扮演的就是一個反向代理角色钝荡。
反向代理,主要用于服務(wù)器集群分布式部署的情況下舶衬,反向代理隱藏了服務(wù)器的信息埠通!
3、負(fù)載均衡
負(fù)載均衡在實際項目操作過程中逛犹,有硬件負(fù)載均衡和軟件負(fù)載均衡兩種端辱,硬件負(fù)載均衡也稱為硬負(fù)載,如F5負(fù)載均衡圾浅,相對造價昂貴成本較高掠手,但是數(shù)據(jù)的穩(wěn)定性安全性等等有非常好的保障,如中國移動中國聯(lián)通這樣的公司才會選擇硬負(fù)載進行操作狸捕;更多的公司考慮到成本原因,會選擇使用軟件負(fù)載均衡众雷,軟件負(fù)載均衡是利用現(xiàn)有的技術(shù)結(jié)合主機硬件實現(xiàn)的一種消息隊列分發(fā)機制
nginx支持的負(fù)載均衡調(diào)度算法方式如下:
- weight輪詢(default)
接收到的請求按照順序逐一分配到不同的后端服務(wù)器灸拍,即使在使用過程中,某一臺后端服務(wù)器宕機砾省,nginx會自動將該服務(wù)器剔除出隊列鸡岗,請求受理情況不會受到任何影響。 這種方式下编兄,可以給不同的后端服務(wù)器設(shè)置一個權(quán)重值(weight)轩性,用于調(diào)整不同的服務(wù)器上請求的分配率;權(quán)重數(shù)據(jù)越大狠鸳,被分配到請求的幾率越大揣苏;該權(quán)重值悯嗓,主要是針對實際工作環(huán)境中不同的后端服務(wù)器硬件配置進行調(diào)整的。
- ip_hash
根據(jù)發(fā)起客戶端的ip hash進行匹配卸察,這樣以來脯厨,一個ip就能訪問固定的一臺后端服務(wù)器,這也一定程度上解決了集群部署下session共享的問題坑质。
- fair
智能調(diào)整調(diào)度算法合武,動態(tài)的根據(jù)后端服務(wù)器的請求處理到響應(yīng)的時間進行均衡分配,響應(yīng)時間短處理效率高的服務(wù)器分配到請求的概率高涡扼,響應(yīng)時間長處理效率低的服務(wù)器分配到的請求少稼跳;結(jié)合了前兩者的優(yōu)點的一種調(diào)度算法。但是需要注意的是nginx默認(rèn)不支持fair算法吃沪,如果要使用這種調(diào)度算法汤善,請安裝upstream_fair模塊
- url_hash
根據(jù)訪問請求的url hash進行分配,每個請求的url會指向固定的某臺服務(wù)器巷波,可以在nginx作為靜態(tài)服務(wù)器的情況下提高緩存效率萎津。默認(rèn)不支持,需安裝nginx的hash軟件包