比如有30個(gè)請(qǐng)求,2臺(tái)服務(wù)器A(10.0.0.1)和B(10.0.0.2),如果希望A處理10個(gè)請(qǐng)求,B處理20個(gè)請(qǐng)求,可以這樣定義:

upstream pools{
 server 10.0.0.1 weight=1;
 server 10.0.0.2 weight=2;
}

ip_hash(靜態(tài)調(diào)度算法)

每個(gè)請(qǐng)求按客戶端IP的hash結(jié)果分配,當(dāng)新的請(qǐng)求到達(dá),先將客戶端IP通過(guò)哈希算法哈希出一個(gè)值,在隨后的分配客戶端請(qǐng)求中,客戶IP的哈希值只要相同,就會(huì)被分配到同一臺(tái)服務(wù)器。

upstream blog_pool{
 ip_hash;
 server 192.168.30.5:80;
 server 192.168.30.6:8090;
}

注意:當(dāng)使用ip_hash時(shí),不能有weight和backup。

least_conn算法

least_conn算法會(huì)根據(jù)后端服務(wù)器的連接數(shù)來(lái)覺(jué)得分配情況,哪臺(tái)服務(wù)器連接數(shù)最少就分發(fā)多的請(qǐng)求。

調(diào)度算法除了上面所列的(常用)還有很多,就不一一列舉了。

http_proxy_module模塊

http_proxy_module可以將請(qǐng)求轉(zhuǎn)發(fā)到另外一臺(tái)服務(wù)器,在反向代理中,會(huì)通過(guò)location功能匹配指定的URI,然后把收到符合匹配的URI的請(qǐng)求通過(guò)proxy_pass拋給定義好的upstream節(jié)點(diǎn)池。

http_proxy模塊參數(shù)

參數(shù) 說(shuō)明
proxy_set_header 設(shè)置http請(qǐng)求header項(xiàng)傳給后端服務(wù)器節(jié)點(diǎn),例如:可實(shí)現(xiàn)讓代理后端的服務(wù)器節(jié)點(diǎn)獲取訪問(wèn)客戶端用戶的真實(shí)IP地址
client_body_buffer_size 用于指定客戶端請(qǐng)求主體緩沖區(qū)大小
proxy_connect_timeout 表示反向代理后端節(jié)點(diǎn)服務(wù)器連接的超時(shí)時(shí)間,即發(fā)起握手等候響應(yīng)的超時(shí)時(shí)間
proxy_send_timeout 表示代理后端服務(wù)器的數(shù)據(jù)回傳時(shí)間,即在規(guī)定時(shí)間內(nèi)后端服務(wù)器必須傳完所有數(shù)據(jù),否則nginx將斷開(kāi)這個(gè)連接
proxy_read_timeout 設(shè)置nginx從代理的后端服務(wù)器獲取信息的時(shí)間,表示連接建立成功后,nginx等待后端服務(wù)器的響應(yīng)時(shí)間,其實(shí)是nginx已經(jīng)進(jìn)入后端的排隊(duì)之中等候處理的時(shí)間
proxy_buffer_size 設(shè)置緩沖區(qū)大小,默認(rèn)該緩沖區(qū)大小等于指令proxy_buffers設(shè)置的大小
proxy_buffers 設(shè)置緩沖區(qū)的數(shù)量和大小,nginx從代理的后端服務(wù)器獲取的響應(yīng)信息,會(huì)設(shè)置到緩沖區(qū)
proxy_busy_buffers_size 用于設(shè)置相同很忙時(shí)可以使用的proxy_buffers大小,官方推薦的大小為 proxy_buffers * 2
proxy_trmp_file_write_size 指定proxy緩存臨時(shí)文件的大小

proxy_pass使用

格式:proxy_pass URL;

示例如下:

proxy_pass http://blog.syushin.com/;
proxy_pass http://192.168.30.7:8080/uri;
proxy_pass http://tmp/www.sock;

URL可以是域名,IP地址也可以是socket文件。

對(duì)于proxy_pass的配置有幾點(diǎn)需要注意:
示例1

location /upload/ {
proxy_pass http://192.168.30.7;
}

示例2

location /upload/ {
proxy_pass http://192.168.30.7/; # 注意多了一個(gè)斜桿
}

示例3

location /upload/ {
proxy_pass http://192.168.30.7/blog/;
}

示例4

location /upload/ {
proxy_pass http://192.168.30.7/blog;
}

假如server_name為blog.syushin.com,當(dāng)請(qǐng)求http://blog.syushin.com/uploa…,上面示例1-4的請(qǐng)求結(jié)果是:

示例1:http://192.168.30.7/upload/index.html
示例2:http://192.168.30.7/index.html
示例3:http://192.168.30.7/blog/index.html
示例4:http://192.168.30.7/blogindex.html

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-62778877-8306;郵箱:fanjiao@west.cn。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處:西部數(shù)碼知識(shí)庫(kù) » Nginx反向代理與負(fù)載均衡實(shí)戰(zhàn)篇

登錄

找回密碼

注冊(cè)