nginx反向代理服務(wù)器及負(fù)載均衡服務(wù)配置方法
一、正向代理與反向代理
正向代理:是一個(gè)位于客戶(hù)端和原始服務(wù)器(oricin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶(hù)端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶(hù)端。
正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶(hù)端提供訪(fǎng)問(wèn)internet的途徑。
正向代理一般是在客戶(hù)端設(shè)置代理服務(wù)器,通過(guò)代理服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求,最終訪(fǎng)問(wèn)到目標(biāo)服務(wù)器。
反向代理:反向代理服務(wù)器位于用戶(hù)與目標(biāo)服務(wù)器之間,但是對(duì)于用戶(hù)而言,反向代理服務(wù)器就相當(dāng)于目標(biāo)服務(wù)器,即用戶(hù)直接訪(fǎng)問(wèn)反向代理服務(wù)器就可以獲得目標(biāo)服務(wù)器的資源,反向代理服務(wù)器負(fù)責(zé)將請(qǐng)求轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器。用戶(hù)不需要知道目標(biāo)服務(wù)器的地址,也無(wú)須在用戶(hù)端作任何設(shè)定。
配置示例:
server { listen 80; server_name example.com; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
上述配置中,listen指定了Nginx監(jiān)聽(tīng)的端口,server_name指定了反向代理的域名。
location /表示將所有的請(qǐng)求都轉(zhuǎn)發(fā)給后端服務(wù)器。proxy_pass配置后端服務(wù)器的地址,可以是IP地址或域名。proxy_set_header可以設(shè)置一些HTTP頭信息,如Host和X-Real-IP等。
二、負(fù)載均衡
負(fù)載均衡是指將請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器,以達(dá)到提高系統(tǒng)的性能和可用性的目的。Nginx支持多種負(fù)載均衡算法,如輪詢(xún)、加權(quán)輪詢(xún)、最少連接等。
配置示例:
upstream backend_servers { server 192.168.0.1:8080; server 192.168.0.2:8080; server 192.168.0.3:8080; server 192.168.0.4:8080; } server { listen 80; server_name example.com; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
Nginx支持以下幾種負(fù)載均衡方式:
- 輪詢(xún)(Round Robin):這是默認(rèn)的負(fù)載均衡方式。每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
- 權(quán)重(Weight):不同的后端服務(wù)器可能機(jī)器的配置和當(dāng)前系統(tǒng)的負(fù)載并不相同,因此Nginx允許指定每個(gè)服務(wù)器的處理能力。權(quán)重越高,分配的請(qǐng)求越多。
- IP Hash:每個(gè)請(qǐng)求的IP的hash結(jié)果分配,每個(gè)訪(fǎng)客固定訪(fǎng)問(wèn)一個(gè)后端服務(wù)器,可以解決session的問(wèn)題。
- 最少連接(Least Connections):優(yōu)先分配給當(dāng)前連接數(shù)最少的服務(wù)器,適用于請(qǐng)求處理時(shí)間相差較大的情況。
- URL Hash:按照訪(fǎng)問(wèn)URL的hash結(jié)果來(lái)分配請(qǐng)求,使得每個(gè)URL定向到同一個(gè)后端服務(wù)器,可以在后端服務(wù)器生成緩存的情況下提高系統(tǒng)效率。
以上負(fù)載均衡方式中,輪詢(xún)、權(quán)重和IP Hash是Nginx內(nèi)置支持的,最少連接和URL Hash需要使用Nginx的第三方模塊,如ngx_http_upstream_least_conn_module和ngx_http_upstream_hash_module。
(1)基于輪詢(xún)的算法
原理是每一個(gè)請(qǐng)求按時(shí)間順序逐一被分發(fā)到不同的應(yīng)用服務(wù)器,如果接收請(qǐng)求的應(yīng)用服務(wù)器掛了,并且請(qǐng)求超過(guò)最大失敗次數(shù)max_fails(1次),則在失效時(shí)間fail_timeout(10秒)內(nèi)不會(huì)再轉(zhuǎn)發(fā)請(qǐng)求到該節(jié)點(diǎn)~
upstream defaultReverseProxyServer{ server 192.168.0.1:8080; server 192.168.0.2:8080; }
(2)基于權(quán)重的算法
原理是每一個(gè)請(qǐng)求按權(quán)重被分發(fā)到不同的應(yīng)用服務(wù)器,同樣,如果接收請(qǐng)求的應(yīng)用服務(wù)器掛了,并且請(qǐng)求超過(guò)最大失敗次數(shù)max_fails(默認(rèn)1次或可設(shè)置N次),則在失效時(shí)間fail_timeout(默認(rèn)10秒,可設(shè)置N秒)內(nèi),不會(huì)再轉(zhuǎn)發(fā)請(qǐng)求到該節(jié)點(diǎn)~
upstream weightReverseProxyServer{ server 192.168.0.1:8080 weight=10 max_fails=2 fail_timeout=5s; server 192.168.0.2:8080 weight=5 max_fails=2 fail_timeout=5s; }
(3)基于ip_hash的算法
原理是每一個(gè)請(qǐng)求按用戶(hù)訪(fǎng)問(wèn)IP的哈希結(jié)果分配,如果請(qǐng)求來(lái)自同一個(gè)用戶(hù)IP則固定這臺(tái)IP訪(fǎng)問(wèn)一臺(tái)應(yīng)用服務(wù)器,該算法可以有效解決動(dòng)態(tài)網(wǎng)頁(yè)中存在的session共享問(wèn)題。
upstream ipHashReverseProxyServer{ ip_hash; server 192.168.0.1:8080; server 192.168.0.2:8080; }
一般使用的是基于權(quán)重的算法,因?yàn)楝F(xiàn)在很多情況下都是集群部署,而且集群下的各個(gè)服務(wù)器資源大多都是不均勻的,資源高的則分配權(quán)重高一些,資源低的則分配權(quán)重低一些,這種情況使用基于權(quán)重的負(fù)載均衡算法,可以更高效的利用資源和提高并發(fā)處理能力~
到此這篇關(guān)于nginx反向代理服務(wù)器及負(fù)載均衡服務(wù)配置的文章就介紹到這了,更多相關(guān)nginx負(fù)載均衡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
寶塔使用Nginx?Proxy?Manager申請(qǐng)SSL的實(shí)現(xiàn)
本文主要介紹了寶塔使用Nginx?Proxy?Manager申請(qǐng)SSL,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02Nginx實(shí)現(xiàn)動(dòng)靜分離的示例代碼
這篇文章主要介紹了Nginx實(shí)現(xiàn)動(dòng)靜分離的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01使用LDAP實(shí)現(xiàn)Nginx用戶(hù)認(rèn)證的示例
本文主要使用Nginx和LDAP實(shí)現(xiàn)用戶(hù)認(rèn)證,通過(guò)配置Nginx和安裝nginx-auth-ldap模塊,可以實(shí)現(xiàn)基于LDAP的認(rèn)證邏輯,下面就來(lái)介紹一下,感興趣的可以了解一下2024-12-12nginx解決圖片顯示過(guò)慢,下載不完全的問(wèn)題
這篇文章主要介紹了nginx解決圖片顯示過(guò)慢,下載不完全的問(wèn)題,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07把ImageMagic庫(kù)編譯進(jìn)nginx服務(wù)器的一些必要配置
這篇文章主要介紹了把ImageMagic庫(kù)編譯進(jìn)nginx服務(wù)器的一些必要配置,本文給出了操作步驟和配置參數(shù)示例,需要的朋友可以參考下2015-06-06