nginx實(shí)現(xiàn)負(fù)載均衡與實(shí)例解讀
1. 什么是nginx負(fù)載均衡
隨著業(yè)務(wù)量的提高,訪問量和數(shù)據(jù)流量的快速增長,其處理能力和計算強(qiáng)度也相應(yīng)地增大,使得單一的服務(wù)器設(shè)備根本無法承擔(dān) 。 對服務(wù)器升級費(fèi)用十分高昂(F5、Radware),甚至性能再卓越的設(shè)備也不能滿足當(dāng)前業(yè)務(wù)量增長的需求。
針對此情況而衍生出來的一種廉價有效透明的方法以擴(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時 , 該訪問會根據(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這個服務(wù)器中,基本符合權(quán)重的算法
4. 負(fù)載均衡的服務(wù)器如何保持內(nèi)容一致
4.1 那么如果其中一個服務(wù)器掛了,會怎樣呢?
我們把2號服務(wù)器(47.93.240.141)停掉
我們刷新下頁面 ,可以看到無論怎么刷新 , 都是只有1號服務(wù)器
4.2 負(fù)載均衡的服務(wù)器內(nèi)容如何保持內(nèi)容一致
① ==圖片問題==
可以單獨(dú)建立圖片服務(wù)器 或 7牛云的 圖片服務(wù)器 ,就是對象存儲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 不暴露 , 真正暴露的是這個堡壘機(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. 國內(nèi)網(wǎng)址反向代理到國外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é)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
- Nginx+keepalived雙機(jī)熱備技術(shù)實(shí)踐
- 生產(chǎn)環(huán)境部署Nginx服務(wù)器雙機(jī)熱備部署keepalived的步驟(多種模式教程)
- Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案
- Nginx雙機(jī)熱備的實(shí)現(xiàn)步驟
- Nginx+Keepalived實(shí)現(xiàn)雙機(jī)熱備
- keepalived雙機(jī)熱備nginx的配置方法
- Nginx+Tomcat負(fù)載均衡群集全過程
- Nginx部署負(fù)載均衡服務(wù)的步驟全解析
- nginx負(fù)載均衡配置方式
- nginx負(fù)載均衡及詳細(xì)配置方法
- Nginx實(shí)現(xiàn)負(fù)載均衡的配置步驟
- nginx tcp負(fù)載均衡的具體實(shí)現(xiàn)
- keepalived+nginx+httpd實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡
相關(guān)文章
Nginx的location的常見規(guī)則優(yōu)先級問題
Nginx是反向代理和負(fù)載均衡的首選工具,nginx的location配置有許多細(xì)節(jié)內(nèi)容在網(wǎng)上不容易找到資料,或者解釋不清。本文對Nginx location規(guī)則優(yōu)先級介紹,需要的朋友參考下吧2021-08-08nginx支持codeigniter的pathinfo模式url重寫配置寫法示例
這篇文章主要介紹了nginx支持codeigniter的pathinfo模式url重寫配置寫法示例,pathinfo模式是一種開發(fā)框架都愛用的路由模式,需要的朋友可以參考下2014-07-07使用ngxtop實(shí)時監(jiān)控Nginx日志文件的示例代碼
在Nginx日志分析領(lǐng)域,ngxtop是一款強(qiáng)大的實(shí)時監(jiān)控工具,它能夠即時解析Nginx的訪問日志文件,提供直觀、可定制的實(shí)時統(tǒng)計信息,幫助管理員更好地了解服務(wù)器的運(yùn)行狀況和Web流量,本文給大家介紹使用ngxtop實(shí)時監(jiān)控Nginx日志文件的示例代碼,需要的朋友可以參考下2024-01-01Nginx?CertBot配置HTTPS泛域名證書Debian及常見問題
這篇文章主要介紹了Nginx?CertBot配置HTTPS泛域名證書Debian及常見問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Nginx可視化管理工具結(jié)合cpolar實(shí)現(xiàn)遠(yuǎn)程訪問的步驟詳解
Nginx Proxy Manager 是一個開源的反向代理工具,本文將給大家介紹在Linux 安裝Nginx Proxy Manager并且結(jié)合 cpolar內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問管理界面,同等,當(dāng)我們使用Nginx Proxy Manager配置其他本地服務(wù),并且需要遠(yuǎn)程訪問,也是同樣的方式,需要的朋友可以參考下2023-09-09