nginx實(shí)現(xiàn)負(fù)載均衡與實(shí)例解讀
1. 什么是nginx負(fù)載均衡
隨著業(yè)務(wù)量的提高,訪問量和數(shù)據(jù)流量的快速增長(zhǎng),其處理能力和計(jì)算強(qiáng)度也相應(yīng)地增大,使得單一的服務(wù)器設(shè)備根本無法承擔(dān) 。 對(duì)服務(wù)器升級(jí)費(fèi)用十分高昂(F5、Radware),甚至性能再卓越的設(shè)備也不能滿足當(dāng)前業(yè)務(wù)量增長(zhǎng)的需求。
針對(duì)此情況而衍生出來的一種廉價(jià)有效透明的方法以擴(kuò)展現(xiàn)有網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性的技術(shù)就是負(fù)載均衡(Load Balance)。
nginx負(fù)載均衡就是一種是通過軟件來進(jìn)行解決的,基于Linux系統(tǒng)并且開源的負(fù)載均衡策略.
2. 一般中型網(wǎng)站架構(gòu)圖
3. 實(shí)戰(zhàn)配置nginx負(fù)載均衡
負(fù)載均衡有多種算法:
- 1.源地址哈希法
- 2.輪詢法
- 3.隨機(jī)法
- 4.加權(quán)輪詢法
- 5.最小連接數(shù)法 具體算法的意思網(wǎng)上一大把
3.1 負(fù)載均衡拓?fù)?/h3>
3.2 如何配置
upstream test-server{ server 47.106.98.90:80 weight=1; server 47.93.240.141:80 weight=2; } server { listen 80; server_name www.test.com; location / { proxy_pass http://test-server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; //獲取轉(zhuǎn)發(fā) 客戶端ip proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect default; } }
這段是nginx調(diào)度服務(wù)器上 nginx.conf里的設(shè)置
nginx的負(fù)載均衡主要就是以上代碼。 它放在http區(qū)塊里
test-server 是自定義的命名,可以自己自定。
意思是:
1. 當(dāng)用戶訪問 www.test.com時(shí) , 該訪問會(huì)根據(jù)權(quán)重 隨機(jī)分配到47.106.98.90 或 47.93.240.141 中,端口指定80
2. 這里用了權(quán)重的算法
3.3 演示
重啟nginx,第一次訪問http://www.test.com如圖所示
- 第一次
- 第二次
在我們10次的刷新訪問中,有3次是跳轉(zhuǎn)到90這個(gè)服務(wù)器中,基本符合權(quán)重的算法
4. 負(fù)載均衡的服務(wù)器如何保持內(nèi)容一致
4.1 那么如果其中一個(gè)服務(wù)器掛了,會(huì)怎樣呢?
我們把2號(hào)服務(wù)器(47.93.240.141)停掉
我們刷新下頁面 ,可以看到無論怎么刷新 , 都是只有1號(hào)服務(wù)器
4.2 負(fù)載均衡的服務(wù)器內(nèi)容如何保持內(nèi)容一致
① ==圖片問題==
可以單獨(dú)建立圖片服務(wù)器 或 7牛云的 圖片服務(wù)器 ,就是對(duì)象存儲(chǔ)OSS
5. 同樣的,負(fù)載均衡也可以是作為堡壘機(jī)
upstream test-server{ server 47.106.98.99:80 weight=1; } server { listen 80; server_name www.test.com; location / { proxy_pass http://test-server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; //獲取轉(zhuǎn)發(fā) 客戶端ip proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect default; } }
這樣就能保護(hù) 47.106.98.99 的真實(shí)ip 不暴露 , 真正暴露的是這個(gè)堡壘機(jī)的ip 。 (比如 47.100.100.100)
域名設(shè)置方面把 域名解析到 47.100.100.100 .
6. 配置轉(zhuǎn)發(fā) https
server { listen 443 ssl; server_name www.test.com; ssl_certificate /usr/local/wap.pem; ssl_certificate_key /usr/local/wap.key; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; location / { limit_req zone=mylimit burst=50 nodelay; proxy_pass https://192.168.1.62; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_redirect default; } }
轉(zhuǎn)發(fā) https ,需要證書 ,劃下重點(diǎn)
ssl_certificate /usr/local/wap.pem; ssl_certificate_key /usr/local/wap.key;
7. 國(guó)內(nèi)網(wǎng)址反向代理到國(guó)外https網(wǎng)址
server { listen 80; server_name ai.abc.com; location / { proxy_ssl_server_name on; proxy_ssl_name api.openai.com; proxy_ssl_verify off; proxy_pass https://api.openai.com; proxy_set_header Host api.openai.com; proxy_set_header Accept-Encoding ''; } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Nginx服務(wù)器中配置超時(shí)時(shí)間的方法
這篇文章主要介紹了Nginx服務(wù)器中配置超時(shí)時(shí)間的方法,同時(shí)也對(duì)Nginx中的時(shí)間管理機(jī)制作了詳細(xì)的介紹,需要的朋友可以參考下2015-12-12Nginx代理Redis哨兵主從配置的實(shí)現(xiàn)
本文主要介紹了Nginx代理Redis哨兵主從配置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Nginx安裝后/etc/nginx/conf.d下沒有default.conf的解決
nginx.conf是nginx默認(rèn)加載的配置文件 通過nginx -V可以看nginx默認(rèn)配置文件路徑,本文主要介紹了Nginx安裝后/etc/nginx/conf.d下沒有default.conf的解決,感興趣的可以了解一下2023-11-11nginx配置多個(gè)前端項(xiàng)目實(shí)現(xiàn)步驟
本文主要介紹了nginx配置多個(gè)前端項(xiàng)目實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03