這篇文章主要介紹了Nginx反向代理與負(fù)載均衡怎么配置的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Nginx反向代理與負(fù)載均衡怎么配置文章都會有所收獲,下面我們一起來看看吧。
成都創(chuàng)新互聯(lián)公司專注于白城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供白城營銷型網(wǎng)站建設(shè),白城網(wǎng)站制作、白城網(wǎng)頁設(shè)計、白城網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造白城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供白城網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
反向代理
反向代理指的是以代理服務(wù)器接收用戶的的訪問請求,代理用戶向內(nèi)部服務(wù)器重新發(fā)起請求,最后把內(nèi)部服務(wù)器的響應(yīng)信息返回給用戶。這樣,代理服務(wù)器對外就表現(xiàn)為一臺服務(wù)器,而訪問內(nèi)部服務(wù)器的客戶端用的就是代理服務(wù)器,而不是真實(shí)網(wǎng)站訪問用戶。
為什么使用反向代理
可以起到保護(hù)網(wǎng)站安全的作用,因?yàn)槿魏蝸碜詉nternet的請求都必須先經(jīng)過代理服務(wù)器。
通過緩存靜態(tài)資源,加速web請求。
實(shí)現(xiàn)負(fù)載均衡
反向代理例子
環(huán)境說明
假如有ab兩個服務(wù)器。a服務(wù)器提供web資源,并且只給內(nèi)網(wǎng)訪問。b服務(wù)器有兩塊網(wǎng)卡,一塊與a服務(wù)器在一個內(nèi)網(wǎng),以塊是外網(wǎng)。此時,用戶c想直接訪問a服務(wù)器是行不通的。這時就可以通過b服務(wù)器代理用戶c的請求去訪問a服務(wù)器了。
hostname | 網(wǎng)卡 | ip | 說明 |
---|---|---|---|
moli-04 | ens33 | 192.168.30.6 | 內(nèi)網(wǎng)ip,代理服務(wù)器 |
moli-04 | ens37 | 192.168.93.129 | 外網(wǎng)ip,代理服務(wù)器 |
moli-05 | ens33 | 192.168.30.7 | 內(nèi)網(wǎng)服務(wù)器 |
兩臺機(jī)器都安裝nginx
moli-05服務(wù)器訪問是wordpress博客,域名blog.syushin.org
虛擬機(jī)實(shí)驗(yàn)環(huán)境,就都關(guān)閉防火墻了
配置虛擬主機(jī)
moli-04機(jī)器上編輯虛擬主機(jī)配置文件,內(nèi)容如下:
[root@moli-04 extra]$ cat blog.syushin.org.conf server{ listen 80; server_name blog.syushin.org; location / { proxy_pass http://192.168.30.7; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; } }
更改hosts文件
windows上修改hosts文件,添加配置
192.168.93.129 blog.syushin.org
瀏覽器測試
訪問地址是192.168.93.129,出現(xiàn)的界面的05機(jī)器的頁面,配置成功。
負(fù)載均衡
負(fù)載均衡的功能
對用戶的訪問請求進(jìn)行調(diào)度管理
對用戶的訪問請求進(jìn)行壓力分擔(dān)
負(fù)載均衡集群在運(yùn)行時,一般是通過一個或者多個前端負(fù)載均衡器將客戶訪問請求發(fā)到后端的一組服務(wù)器上。
nginx負(fù)載均衡
嚴(yán)格來說,nginx僅僅是作為nginx proxy反向代理的使用的,但是因?yàn)檫@個反向代理功能表現(xiàn)的效果是負(fù)載均衡機(jī)器的效果,因此nginx負(fù)載均衡是特殊的反向代理。
實(shí)現(xiàn)nginx負(fù)載均衡的主要組件:
nginx模塊 | 說明 |
---|---|
ngx_http_proxy_module | proxy代理模塊,用于把請求發(fā)送給服務(wù)器節(jié)點(diǎn)或upstream服務(wù)器池 |
ngx_http_upstream_module | 負(fù)載均衡模塊,可以實(shí)現(xiàn)網(wǎng)站的負(fù)載均衡功能及節(jié)點(diǎn)的健康檢查 |
upstream模塊介紹
ngx_http_upstream_module模塊支持的代理方式有proxy_pass,fastcgi_pass等,主要使用proxy_pass。
upstream模塊允許nginx定義一組或多組節(jié)點(diǎn)服務(wù)器組,使用時通過proxy_pass代理把網(wǎng)站的請求發(fā)送到定義好的對應(yīng)的節(jié)點(diǎn)組中。
示例:創(chuàng)建節(jié)點(diǎn)服務(wù)器池
upstream blog { server 192.168.30.5:80 weight=5; server 192.168.30.6:81 weight=10; server 192.168.30.7:82 weight=15; }
upstream
:創(chuàng)建節(jié)點(diǎn)服務(wù)器組的關(guān)鍵字,必須有;blog
:節(jié)點(diǎn)服務(wù)器組的名字,必須有,可自定義名字;server
:關(guān)鍵字,后面可加ip或者域名或者ip:端口,不指定端口默認(rèn)80;weight
:權(quán)重,數(shù)值越大被分配的請求越多。默認(rèn)為1
設(shè)置節(jié)點(diǎn)服務(wù)器的狀態(tài)值除了weight之外,還有:max_fails
:允許請求失敗的次數(shù)默認(rèn)為1.當(dāng)超過最大次數(shù)時,返回proxy_next_upstream 模塊定義的錯誤.fail_timeout
:max_fails次失敗后,暫停的時間。down
:表示當(dāng)前的節(jié)點(diǎn)服務(wù)器不參與負(fù)載,標(biāo)志機(jī)器永遠(yuǎn)不可用,可配合ip_hash使用backup
:其它所有的非backup機(jī)器down或者忙的時候,請求backup機(jī)器。所以這臺機(jī)器壓力會最輕。
使用域名的upstream
upstream blog2{ server www.syushin.com weight=5; server blog.syushin.org down; server blog.syushin.cc backup; }
調(diào)度算法
rr輪詢(默認(rèn)調(diào)度算法,靜態(tài)調(diào)度算法)
按客戶端請求順序把客戶端的請求逐一分配到不同的后端節(jié)點(diǎn)服務(wù)器。
wrr(權(quán)重輪詢,靜態(tài)調(diào)度算法)
在rr輪詢的基礎(chǔ)上加上權(quán)重,使用該算法的時候,權(quán)重和用戶訪問成正比,權(quán)重值越大,被轉(zhuǎn)發(fā)的請求就越多。
比如有30個請求,2臺服務(wù)器a(10.0.0.1)和b(10.0.0.2),如果希望a處理10個請求,b處理20個請求,可以這樣定義:
upstream pools{ server 10.0.0.1 weight=1; server 10.0.0.2 weight=2; }
ip_hash(靜態(tài)調(diào)度算法)
每個請求按客戶端ip的hash結(jié)果分配,當(dāng)新的請求到達(dá),先將客戶端ip通過哈希算法哈希出一個值,在隨后的分配客戶端請求中,客戶ip的哈希值只要相同,就會被分配到同一臺服務(wù)器。
upstream blog_pool{ ip_hash; server 192.168.30.5:80; server 192.168.30.6:8090; }
注意:當(dāng)使用ip_hash時,不能有weight和backup。
least_conn算法
least_conn算法會根據(jù)后端服務(wù)器的連接數(shù)來覺得分配情況,哪臺服務(wù)器連接數(shù)最少就分發(fā)多的請求。
調(diào)度算法除了上面所列的(常用)還有很多,就不一一列舉了。
http_proxy_module模塊
http_proxy_module可以將請求轉(zhuǎn)發(fā)到另外一臺服務(wù)器,在反向代理中,會通過location功能匹配指定的uri,然后把收到符合匹配的uri的請求通過proxy_pass拋給定義好的upstream節(jié)點(diǎn)池。
http_proxy模塊參數(shù)
參數(shù) | 說明 |
---|---|
proxy_set_header | 設(shè)置http請求header項(xiàng)傳給后端服務(wù)器節(jié)點(diǎn),例如:可實(shí)現(xiàn)讓代理后端的服務(wù)器節(jié)點(diǎn)獲取訪問客戶端用戶的真實(shí)ip地址 |
client_body_buffer_size | 用于指定客戶端請求主體緩沖區(qū)大小 |
proxy_connect_timeout | 表示反向代理后端節(jié)點(diǎn)服務(wù)器連接的超時時間,即發(fā)起握手等候響應(yīng)的超時時間 |
proxy_send_timeout | 表示代理后端服務(wù)器的數(shù)據(jù)回傳時間,即在規(guī)定時間內(nèi)后端服務(wù)器必須傳完所有數(shù)據(jù),否則nginx將斷開這個連接 |
proxy_read_timeout | 設(shè)置nginx從代理的后端服務(wù)器獲取信息的時間,表示連接建立成功后,nginx等待后端服務(wù)器的響應(yīng)時間,其實(shí)是nginx已經(jīng)進(jìn)入后端的排隊(duì)之中等候處理的時間 |
proxy_buffer_size | 設(shè)置緩沖區(qū)大小,默認(rèn)該緩沖區(qū)大小等于指令proxy_buffers設(shè)置的大小 |
proxy_buffers | 設(shè)置緩沖區(qū)的數(shù)量和大小,nginx從代理的后端服務(wù)器獲取的響應(yīng)信息,會設(shè)置到緩沖區(qū) |
proxy_busy_buffers_size | 用于設(shè)置相同很忙時可以使用的proxy_buffers大小,官方推薦的大小為 proxy_buffers * 2 |
proxy_trmp_file_write_size | 指定proxy緩存臨時文件的大小 |
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文件。
對于proxy_pass的配置有幾點(diǎn)需要注意:
示例1
location /upload/ {
proxy_pass http://192.168.30.7;
}
示例2
location /upload/ {
proxy_pass http://192.168.30.7/; # 注意多了一個斜桿
}
示例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)請求http://blog.syushin.com/uploa...,上面示例1-4的請求結(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
關(guān)于“Nginx反向代理與負(fù)載均衡怎么配置”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Nginx反向代理與負(fù)載均衡怎么配置”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章標(biāo)題:Nginx反向代理與負(fù)載均衡怎么配置
分享鏈接:http://vcdvsql.cn/article28/pepecp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站收錄、服務(wù)器托管、企業(yè)網(wǎng)站制作、網(wǎng)站改版、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)