nginx反向代理服務(wù)器及負(fù)載均衡服務(wù)配置方法
一、正向代理與反向代理
正向代理:是一個位于客戶端和原始服務(wù)器(oricin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。
正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問internet的途徑。

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

