?
目錄
1.反向代理介紹:
?2.七層代理和四層代理:
? 2.1 七層代理:
? 2.2 四層代理:
3.反向代理web服務(wù)器:
? 3.1 代理服務(wù)器配置:
3.2 服務(wù)器配置?:
3.3?客戶端訪問:
3.4 代理不同端口:
4.反向代理動靜分離:
? 4.1? 準(zhǔn)備:
? 4.2 代理服務(wù)器配置:
? 4.3 動態(tài)服務(wù)器配置:
? 4.4 靜態(tài)服務(wù)器配:
? 4.5? 測試:
5.反向代理服務(wù)器的緩存功能:
? 5.1 主配置文件定義緩存參數(shù):
? 5.2 子配置文件調(diào)用緩存功能:
? ? 5.3 示例:
代理服務(wù)器:
測試:
??6.反向代理客戶端IP透傳:?
? ? 6.1反向代理服務(wù)器配置:
? 6.2 服務(wù)器日志:? ?
7.反向代理負載均衡:
? 7.1 默認算法輪詢:
7.2? 加權(quán)輪詢:
7.3 IP_hash:
7.4?url_hash:
7.5?least_conn:
7.6?使用場景總結(jié):
1.反向代理介紹:
反向代理:reverse proxy,指的是代理外網(wǎng)用戶的請求到內(nèi)部的指定的服務(wù)器,并將數(shù)據(jù)返回給用戶的一種方式,這是用的比較多的一種方式。
? ?Nginx 除了可以在企業(yè)提供高性能的web服務(wù)之外,另外還可以將 nginx 本身不具備的請求通過某種預(yù)定義的協(xié)議轉(zhuǎn)發(fā)至其它服務(wù)器處理,不同的協(xié)議就是Nginx服務(wù)器與其他服務(wù)器進行通信的一種規(guī)范,主要在不同的場景使用以下模塊實現(xiàn)不同的功能
?2.七層代理和四層代理:
? 2.1 七層代理:
- 七層是最常用的反向代理,只能配置的在nginx配置文件的http模塊中
- 配置的方法名稱:upstream 模塊,不能寫在server中,也不能在location中,在http模塊當(dāng)中是獨立的一個配置
? 2.2 四層代理:
- 四層代理是基于tcp/ip協(xié)議層的代理轉(zhuǎn)發(fā)方式,可以實現(xiàn)基于ip地址和端口進行負載均衡轉(zhuǎn)發(fā)。
- 四層代理無法獲取http請求當(dāng)中的URL信息,只能對tcp/udp數(shù)據(jù)包進行轉(zhuǎn)發(fā)。流量轉(zhuǎn)發(fā)。
- 配置的方法名稱:stream,stream是不能配置在http模塊中,配置在全局當(dāng)中。是屬于一個獨立的模塊,不屬于其他任何模塊。
3.反向代理web服務(wù)器:
? 3.1 代理服務(wù)器配置:
vim /apps/nginx/conf.d/www.conf
server{
listen 80;
server_name www.wzw.com;
root /apps/nginx/html;
location / {
proxy_pass http://192.168.88.101;
}
}
3.2 服務(wù)器配置?:
? ? ? vim /apps/nginx/html/index.html
<html>
<body>
<h1>this is yunjisuan </h1>
<img src="http://www.wzw.com/2.jpg"/>
</body>
</html>
3.3?客戶端訪問:
3.4 代理不同端口:
? ?代理服務(wù)器添加監(jiān)聽端口:
4.反向代理動靜分離:
? 4.1? 準(zhǔn)備:
? 4.2 代理服務(wù)器配置:
server{
listen 80;
listen 8080;
server_name www.wzw.com;
root /apps/nginx/html;
location /static {
proxy_pass http://192.168.88.128;
}
location /api {
proxy_pass http://192.168.88.101;
}
}
nginx -s reload
? 4.3 動態(tài)服務(wù)器配置:
? cd /apps/nginx/html
? mkdire? api
? vim index.html
api
api
api
api
api
api
api
vim /apps/nginx/conf/nginx.conf
server塊添加監(jiān)聽端口:
listen 8080;
nginx -s reload
? 4.4 靜態(tài)服務(wù)器配:
? cd /apps/nginx/html
? mkdire? api
? vim index.html
static
static
static
static
static
static
? 4.5? 測試:
5.反向代理服務(wù)器的緩存功能:
? 后端服務(wù)器突然關(guān)閉時,客戶端無法訪問,代理服務(wù)器的緩存功能可以加強安全穩(wěn)定性。
? 5.1 主配置文件定義緩存參數(shù):
proxy_cache_path /apps/nginx/proxycache #定義緩存保存路徑
levels=1:1:1?#定義緩存目錄結(jié)構(gòu)層次
keys_zone=proxycache:20m #指內(nèi)存中緩存的大小,主要用于存放key
inactive=120s #緩存有效時間
max_size=10g; #最大磁盤占用空間,磁盤存入文件內(nèi)容的緩存空間最大值
? 5.2 子配置文件調(diào)用緩存功能:
proxy_cache proxycache? ??? ? ##使用定義名稱;?
proxy_cache_key $request_uri;? #對客戶端url的數(shù)據(jù)進行MD5的運算做為緩存的key
proxy_cache_valid? ?[code ...]? time;? #定義對【響應(yīng)碼】的響應(yīng)內(nèi)容的緩存時長? ? ?
proxy_cache_valid any 1m; ?#除指定的狀態(tài)碼返回的數(shù)據(jù)以外的緩存多長時間,必須設(shè)置,否則不會緩存
?清理緩存?? 方法1::rm -rf 緩存目錄? (還是這個方便。。)
? ? ? ? ? ? ? ? ? 方法2: 第三方擴展模塊ngx_cache_purge
? ? 5.3 示例:
代理服務(wù)器:
vim /apps/nginx/conf/nginx.conf
http模塊添加:
proxy_cache_path /apps/nginx/proyxcache levels=1:1:1 keys_zone=proxycache:20m inactive=120s max_size=1g;
vim /apps/nginx/conf.d/www.conf
server塊添加:
proxy_cache proxycache;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 10m;
proxy_cache_valid any 5m;
測試:
? 真實服務(wù)器關(guān)閉服務(wù):?
?? 6.反向代理客戶端IP透傳:?
? ? 6.1反向代理服務(wù)器配置:
location / {
proxy_pass http://192.168.88.101:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#添加 客戶端IP和反向代理服務(wù)器IP到請求報文頭部;
}
proxy_set_header X-Real-IP $remote_addr;
#也可以使用,只添加客戶端IP到請求報文頭部,轉(zhuǎn)發(fā)至后端服務(wù)器;
? 6.2 服務(wù)器日志:? ?
$http_x_forwarded_for;? ? 記錄跳轉(zhuǎn)信息,默認日志中有此項。如果是自定義日志需要添加。
7.反向代理負載均衡:
? ? Nginx 可以基于ngx_http_upstream_module模塊提供服務(wù)器分組轉(zhuǎn)發(fā)、權(quán)重分配、狀態(tài)監(jiān)測、調(diào)度算法等高級功能。
? 7.1 默認算法輪詢:
? ? 最基本的配置方法,每個請求會按時間順序逐一分配到不同的后端服務(wù)器基本上1:1。
upstream wzw { ##定義一組服務(wù)器組
server 192.168.88.101;
server 192.168.88.128;
}
server{
listen 80;
server_name www.wzw.com;
root /apps/nginx/html;
location / {
proxy_pass http://wzw; ##代理到wzw組
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
7.2? 加權(quán)輪詢:
? 加權(quán)輪詢建立在輪詢算法之上,通過給不同web服務(wù)器權(quán)重,讓處理能力更強的服務(wù)器可以分配到更多的請求。
upstream wzw { ##定義一組服務(wù)器組
server 192.168.88.101 weight=5;
server 192.168.88.128 weight=1;
}
server{
listen 80;
server_name www.wzw.com;
root /apps/nginx/html;
location / {
proxy_pass http://wzw; ##代理到wzw組
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
7.3 IP_hash:
- ip_hash根據(jù)IP地址,計算出hash值,使用ip_hash算法,同一客戶端的請求會被分配到同一個后端服務(wù)器,從而保證會話的穩(wěn)定性,請求速度塊。
- 缺點:如果后端服務(wù)器數(shù)量發(fā)生改變,hash會重新計算,請求服務(wù)器也會改變。
upstream wzw {
ip_hash; ##同一個IP客戶端固定訪問一個后端服務(wù)器
server 192.168.88.101; weight=5;
server 192.168.88.128; weight=1;
}
7.4?url_hash:
? ?根據(jù)uri地址計算hash值,使用url_hash會把相同請求的uri分配到同一個后端web服務(wù)器
upstream wzw {
hash $request_uri consistent; #基于用戶請求的uri做hash
server 192.168.88.101; weight=5;
server 192.168.88.128; weight=1;
}
7.5?least_conn:
? ? 最少連接調(diào)度算法,優(yōu)先將客戶端請求調(diào)度到當(dāng)前連接最少的后端服務(wù)器
? ?主要適用于后端服務(wù)器處理任務(wù)耗時不同的情況,避免了所以請求集中在處理能力更強的服務(wù)器上,一般配合加權(quán)輪詢使用
upstream wzw {
least_conn;
server 192.168.88.101; weight=5;
server 192.168.88.128; weight=1;
}
7.6?使用場景總結(jié):
- 小場景:并發(fā)量很小,默認算法就可以滿足
- 后端web服務(wù)器的處理性能有差異:加權(quán)輪詢與最少連接數(shù)配合使用
- 大型并發(fā):ip_hash或url_hash(可直接訪問緩存,從而緩解后端服務(wù)器壓力,第一次請求后,會有貝蒂緩存,而且因hash算法原因,請求的后端web服務(wù)器不會發(fā)生變化,從而可以提高訪問速度。
?注:?
ip_hash:后端服務(wù)器數(shù)量發(fā)生變化,請求的服務(wù)器也會發(fā)生變化文章來源:http://www.zghlxwxcb.cn/news/detail-693317.html
url_hash:請求的地址發(fā)生變化,請求的服務(wù)器也可能發(fā)生變化文章來源地址http://www.zghlxwxcb.cn/news/detail-693317.html
到了這里,關(guān)于nginx反向代理 負載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!