Nginx 負(fù)載均衡和緩存配置最佳實(shí)踐
Nginx 負(fù)載均衡配置
1. 基礎(chǔ)配置
在 Nginx 中,負(fù)載均衡主要通過(guò) upstream 模塊實(shí)現(xiàn),結(jié)合反向代理將請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器。以下是一個(gè)基礎(chǔ)配置示例:
http {
upstream backend_servers {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}upstream backend_servers:定義了一個(gè)后端服務(wù)器組,名稱為backend_servers。server:指定后端服務(wù)器的 IP 地址和端口。proxy_pass:將請(qǐng)求轉(zhuǎn)發(fā)到upstream定義的服務(wù)器組。proxy_set_header:設(shè)置 HTTP 頭,以便后端服務(wù)器可以獲取請(qǐng)求的相關(guān)信息。
2. 負(fù)載均衡策略
Nginx 支持多種負(fù)載均衡策略:
輪詢(默認(rèn)):依次將請(qǐng)求分發(fā)到每個(gè)后端服務(wù)器。
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
}加權(quán)輪詢:為每個(gè)服務(wù)器分配不同的權(quán)重,權(quán)重越高,分配到的請(qǐng)求越多。
upstream backend {
server 192.168.1.101 weight=3;
server 192.168.1.102 weight=2;
server 192.168.1.103 weight=1;
}IP 哈希:根據(jù)客戶端的 IP 地址將請(qǐng)求分發(fā)到固定的后端服務(wù)器,適用于需要會(huì)話保持的場(chǎng)景。
upstream backend {
ip_hash;
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
}最少連接:將請(qǐng)求分發(fā)到當(dāng)前連接數(shù)最少的服務(wù)器,適用于處理時(shí)間較長(zhǎng)的請(qǐng)求。
upstream backend {
least_conn;
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
}3. 高級(jí)配置
健康檢查:可以配置健康檢查,自動(dòng)移除不健康的服務(wù)器。
upstream backend {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
health_check interval=10s fails=3 passes=2 uri=/health port=8080;
}備用服務(wù)器:可以指定備用服務(wù)器,當(dāng)主服務(wù)器不可用時(shí)自動(dòng)切換。
upstream backend {
server 192.168.1.10:8080;
server 192.168.1.11:8080 backup;
}Nginx 緩存配置
1. 代理緩存
代理緩存是 Nginx 緩存后端服務(wù)器響應(yīng)的一種方式,適用于動(dòng)態(tài)內(nèi)容的緩存。
http {
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g;
server {
location /dynamic/ {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout http_500 http_502 http_503;
}
}
}proxy_cache_path:定義緩存的存儲(chǔ)路徑、層級(jí)結(jié)構(gòu)、緩存區(qū)域名稱、最大緩存大小等。proxy_cache:指定使用哪個(gè)緩存區(qū)域。proxy_cache_valid:設(shè)置不同響應(yīng)狀態(tài)碼的緩存有效期。proxy_cache_use_stale:在某些情況下使用過(guò)期的緩存,如后端服務(wù)器錯(cuò)誤或超時(shí)。
2. 靜態(tài)資源緩存
對(duì)于靜態(tài)資源,可以直接設(shè)置瀏覽器緩存時(shí)間,減輕服務(wù)器壓力。
location ~* \.(jpg|png|gif)$ {
root /var/www/images;
expires 30d;
}expires:設(shè)置瀏覽器緩存時(shí)間,單位可以是秒、分鐘、小時(shí)、天等。
3. 高級(jí)緩存配置
Vary 響應(yīng)頭:根據(jù)請(qǐng)求的某些頭部字段來(lái)緩存不同版本的資源
proxy_cache_valid 200 302 10m; proxy_cache Vary;
連接和響應(yīng)緩沖:優(yōu)化連接和響應(yīng)的緩沖設(shè)置
proxy_buffers 8 4k; proxy_buffer_size 8k; proxy_busy_buffers_size 16k;
SSL 緩存:如果使用 SSL,配置 SSL 會(huì)話緩存。
ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m;
緩存最佳實(shí)踐
- 合理設(shè)置緩存時(shí)間:根據(jù)資源更新頻率設(shè)置合適的緩存時(shí)間。
- 監(jiān)控緩存命中率:定期檢查緩存命中率,評(píng)估緩存策略的有效性。
- 使用 CDN:利用 CDN 緩存靜態(tài)資源,減輕服務(wù)器壓力。
- 緩存預(yù)熱:部署新版本時(shí),預(yù)先加載緩存,避免緩存穿透。
- 安全性:確保緩存內(nèi)容的安全性,避免敏感信息泄露。
通過(guò)合理配置 Nginx 的負(fù)載均衡和緩存功能,可以顯著提升 Web 應(yīng)用的性能和可靠性。
到此這篇關(guān)于Nginx 負(fù)載均衡和緩存配置的文章就介紹到這了,更多相關(guān)nginx 負(fù)載均衡與緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx HTTP反向代理負(fù)載均衡實(shí)驗(yàn)教程
- Nginx搭建負(fù)載均衡及常見(jiàn)問(wèn)題處理
- Nginx幾種負(fù)載均衡模式的實(shí)現(xiàn)示例
- Nginx負(fù)載均衡通用方案詳解
- Nginx負(fù)載均衡與健康檢查使用詳解
- 詳解Nginx中常見(jiàn)負(fù)載均衡策略配置與使用場(chǎng)景
- Nginx+Tomcat負(fù)載均衡群集全過(guò)程
- Nginx部署負(fù)載均衡服務(wù)的步驟全解析
- nginx負(fù)載均衡配置方式
- Nginx 4層轉(zhuǎn)發(fā)TCP流量實(shí)現(xiàn)負(fù)載代理
相關(guān)文章
使用nginx搭建點(diǎn)播和直播流媒體服務(wù)器的方法步驟
本篇文章主要介紹了使用nginx搭建點(diǎn)播和直播流媒體服務(wù)器的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
keepalived+nginx實(shí)現(xiàn)網(wǎng)站高可用性
本文主要介紹了keepalived+nginx實(shí)現(xiàn)網(wǎng)站高可用性,包含配置Keepalived實(shí)現(xiàn)雙主熱備集群架構(gòu),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
nginx?proxy_pass轉(zhuǎn)發(fā)規(guī)則解讀
這篇文章主要介紹了nginx?proxy_pass轉(zhuǎn)發(fā)規(guī)則,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
nginx版本號(hào)隱藏(附405 not allowed解決辦法)
版本號(hào)泄露時(shí)攻擊者會(huì)利用相應(yīng)軟件版本的當(dāng)前漏洞,進(jìn)行有效的相應(yīng)攻擊,本文主要介紹了nginx版本號(hào)隱藏,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
nginx location 配置 正則表達(dá)式實(shí)例詳解
本文通過(guò)實(shí)例代碼給大家介紹了nginx location 配置 正則表達(dá)式的問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07

