最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx使用sticky模塊完成對(duì)Nginx的負(fù)載均衡(最佳實(shí)踐)

 更新時(shí)間:2026年06月11日 09:12:51   作者:難釋?xiě)? 
本文詳細(xì)介紹了Nginx sticky模塊的安裝與配置,強(qiáng)調(diào)其在會(huì)話(huà)保持方面比優(yōu)于Nginx內(nèi)置hash策略的,并提供給出具體操作步驟與配置示例,感興趣的朋友跟隨小編一起看看吧

一、引言:為什么需要 sticky 模塊?

在使用 Nginx 作為反向代理進(jìn)行負(fù)載均衡時(shí),一個(gè)經(jīng)典難題是 會(huì)話(huà)保持(Session Persistence)。用戶(hù)的請(qǐng)求可能會(huì)被分發(fā)到不同的后端應(yīng)用服務(wù)器(如 Tomcat, Node.js),而這些服務(wù)器之間通常不共享 Session 數(shù)據(jù),導(dǎo)致用戶(hù)頻繁“掉線”。

Nginx 自帶的 ip_hash 策略雖然能解決部分問(wèn)題,但它存在致命缺陷:

  • 受代理/CDN 影響:Nginx 看到的是代理服務(wù)器的 IP,而非真實(shí)用戶(hù) IP,導(dǎo)致大量用戶(hù)被錯(cuò)誤地路由到同一臺(tái)服務(wù)器,造成嚴(yán)重負(fù)載不均。
  • 無(wú)法應(yīng)對(duì)動(dòng)態(tài)擴(kuò)縮容。

為了解決這個(gè)問(wèn)題,社區(qū)開(kāi)發(fā)了 nginx-sticky-module 這個(gè)強(qiáng)大的第三方模塊。它通過(guò) 植入 Cookie 的方式,精準(zhǔn)地將同一用戶(hù)的請(qǐng)求始終路由到同一臺(tái)后端服務(wù)器,完美實(shí)現(xiàn)了會(huì)話(huà)保持。

?? 核心價(jià)值
sticky 模塊提供了一種比 ip_hash 更精準(zhǔn)、更可靠的會(huì)話(huà)保持機(jī)制,是開(kāi)源 Nginx 實(shí)現(xiàn)粘性會(huì)話(huà)的最佳實(shí)踐!

二、準(zhǔn)備工作:環(huán)境與依賴(lài)

由于 sticky 是一個(gè)第三方模塊,我們需要從源碼重新編譯 Nginx 來(lái)集成它。

1. 系統(tǒng)環(huán)境

本文以 CentOS 7 / Rocky Linux 8 為例。

2. 安裝編譯依賴(lài)

sudo yum install -y gcc gcc-c++ make libtool pcre pcre-devel openssl openssl-devel zlib zlib-devel

3. 下載 Nginx 源碼

請(qǐng)務(wù)必下載與你當(dāng)前生產(chǎn)環(huán)境相同版本的 Nginx 源碼,以避免兼容性問(wèn)題。

# 例如,下載 Nginx 1.24.0
cd /usr/local/src
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz

4. 下載 sticky 模塊源碼

nginx-sticky-module 有多個(gè)分支,推薦使用維護(hù)較好的 nginx-sticky-module-ng。

cd /usr/local/src
wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/08a395c66e42.zip
unzip 08a395c66e42.zip
# 解壓后會(huì)得到一個(gè)類(lèi)似 "nginx-goodies-nginx-sticky-module-ng-08a395c66e42" 的目錄
mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42 nginx-sticky-module-ng

三、核心步驟:編譯并集成 sticky 模塊

1. 查看現(xiàn)有 Nginx 的編譯參數(shù)(重要?。?/h3>

為了保證新編譯的 Nginx 功能完全一致,我們需要先獲取當(dāng)前 Nginx 的編譯參數(shù)。

nginx -V

你會(huì)看到類(lèi)似如下的輸出:

configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx ... --with-http_ssl_module ...

復(fù)制 configure arguments 后面的所有內(nèi)容。

2. 進(jìn)入 Nginx 源碼目錄并配置

cd nginx-1.24.0
# 在原有參數(shù)的基礎(chǔ)上,加上 --add-module 指向 sticky 模塊的路徑
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
... # 這里是你之前復(fù)制的所有原有參數(shù)
--add-module=/usr/local/src/nginx-sticky-module-ng

3. 編譯(但不要安裝!)

執(zhí)行 make 命令進(jìn)行編譯。這一步不會(huì)覆蓋你現(xiàn)有的 Nginx 安裝,只會(huì)生成一個(gè)新的可執(zhí)行文件。

make

編譯成功后,新的 Nginx 可執(zhí)行文件位于 objs/nginx。

4. 備份并替換原 Nginx 二進(jìn)制文件

# 備份原文件
sudo cp /usr/sbin/nginx /usr/sbin/nginx.bak
# 替換為新編譯的文件
sudo cp objs/nginx /usr/sbin/nginx

5. 驗(yàn)證模塊是否加載成功

nginx -V 2>&1 | grep -o with-http_sticky_module

如果輸出 with-http_sticky_module,則說(shuō)明模塊已成功集成。

四、配置與實(shí)戰(zhàn):?jiǎn)⒂?sticky 負(fù)載均衡

現(xiàn)在,我們可以在 Nginx 配置文件中使用 sticky 指令了。

1. 基本配置示例

編輯你的 nginx.conf 文件,在 upstream 塊中添加 sticky 指令。

upstream backend {
    # 啟用 sticky 模塊
    # name: Cookie 名稱(chēng)
    # expires: Cookie 過(guò)期時(shí)間
    # path: Cookie 作用路徑
    sticky cookie srv_id expires=1h domain=.yourdomain.com path=/;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}
server {
    listen 80;
    server_name yourdomain.com;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2. 關(guān)鍵參數(shù)詳解

  • name: 客戶(hù)端 Cookie 的名稱(chēng)。默認(rèn)為 route。
  • expires: Cookie 的過(guò)期時(shí)間??梢允?nbsp;1h (1小時(shí)), 30m (30分鐘), 或 max (永不過(guò)期)。
  • domain: Cookie 的作用域。設(shè)置為你的主域名(如 .yourdomain.com)可以讓子域名也共享此 Cookie。
  • path: Cookie 的作用路徑。通常設(shè)為 /
  • hash=md5|sha1: 用于生成后端服務(wù)器標(biāo)識(shí)的哈希算法。默認(rèn)是 md5。

3. 工作原理

  1. 首次訪問(wèn):客戶(hù)端請(qǐng)求頭中沒(méi)有 srv_id Cookie。Nginx 根據(jù)負(fù)載均衡策略(如輪詢(xún))選擇一臺(tái)后端服務(wù)器,并在響應(yīng)頭中植入 Set-Cookie: srv_id=xxx; ...。
  2. 后續(xù)訪問(wèn):客戶(hù)端在請(qǐng)求頭中攜帶 Cookie: srv_id=xxx。Nginx 解析此 Cookie,直接將請(qǐng)求轉(zhuǎn)發(fā)給上次分配的那臺(tái)服務(wù)器。

五、驗(yàn)證與排錯(cuò)

1. 驗(yàn)證會(huì)話(huà)保持

  • 使用瀏覽器開(kāi)發(fā)者工具,觀察首次響應(yīng)是否包含 Set-Cookie。
  • 刷新頁(yè)面,檢查后續(xù)請(qǐng)求的 Cookie 頭是否包含 srv_id。
  • 在后端應(yīng)用服務(wù)器上打印請(qǐng)求日志,確認(rèn)同一用戶(hù)的請(qǐng)求始終落在同一臺(tái)服務(wù)器上。

2. 常見(jiàn)問(wèn)題與解決

  • 問(wèn)題1:編譯報(bào)錯(cuò)。
    • 原因sticky 模塊版本與 Nginx 版本不兼容。
    • 解決:嘗試尋找與你 Nginx 版本匹配的 sticky 模塊分支,或修改模塊源碼中的兼容性代碼(通常涉及 ngx_http_upstream_srv_conf_t 結(jié)構(gòu)體)。
  • 問(wèn)題2:Cookie 未生效。
    • 原因:客戶(hù)端禁用了 Cookie,或者 domain/path 配置不正確。
    • 解決:檢查瀏覽器設(shè)置,并確保 domain 配置與你的訪問(wèn)域名匹配。
  • 問(wèn)題3:后端服務(wù)器宕機(jī)
    • 注意sticky 模塊本身不包含健康檢查功能。你需要配合 max_fails 和 fail_timeout 參數(shù),或使用外部健康檢查腳本,才能自動(dòng)剔除故障節(jié)點(diǎn)。

六、結(jié)語(yǔ)

到此這篇關(guān)于Nginx使用sticky模塊完成對(duì)Nginx的負(fù)載均衡(最佳實(shí)踐)的文章就介紹到這了,更多相關(guān)Nginx sticky負(fù)載均衡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx動(dòng)態(tài)IP黑名單的實(shí)現(xiàn)步驟

    Nginx動(dòng)態(tài)IP黑名單的實(shí)現(xiàn)步驟

    為了封禁某些爬蟲(chóng)或者惡意用戶(hù)對(duì)服務(wù)器的請(qǐng)求,我們需要建立一個(gè)動(dòng)態(tài)的?IP?黑名單,本文主要介紹了Nginx動(dòng)態(tài)IP黑名單的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • Nginx實(shí)現(xiàn)動(dòng)態(tài)封禁IP的設(shè)計(jì)方案

    Nginx實(shí)現(xiàn)動(dòng)態(tài)封禁IP的設(shè)計(jì)方案

    為了封禁某些爬蟲(chóng)或者惡意用戶(hù)對(duì)服務(wù)器的請(qǐng)求,我們需要建立一個(gè)動(dòng)態(tài)的 IP 黑名單,對(duì)于黑名單中的 IP ,我們將拒絕提供服務(wù),并且可以設(shè)置封禁失效時(shí)間,所以本文給大家介紹了Nginx實(shí)現(xiàn)動(dòng)態(tài)封禁IP的設(shè)計(jì)方案,需要的朋友可以參考下
    2024-12-12
  • Nginx代理接口訪問(wèn)返回404的實(shí)現(xiàn)示例

    Nginx代理接口訪問(wèn)返回404的實(shí)現(xiàn)示例

    因?yàn)椴煌瑯I(yè)務(wù)系統(tǒng)間有接口調(diào)用,存在跨域問(wèn)題,為了解決同源策略,需要將接口通過(guò)nginx去轉(zhuǎn)發(fā),本文主要介紹了Nginx代理接口訪問(wèn)返回404的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-06-06
  • Nginx配置二級(jí)域名的方法實(shí)現(xiàn)

    Nginx配置二級(jí)域名的方法實(shí)現(xiàn)

    本文主要介紹了Nginx配置二級(jí)域名的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • nginx七層負(fù)載均衡配置詳解

    nginx七層負(fù)載均衡配置詳解

    本文主要介紹了nginx七層負(fù)載均衡配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 詳解Nginx服務(wù)器中的日志相關(guān)配置

    詳解Nginx服務(wù)器中的日志相關(guān)配置

    這篇文章主要介紹了詳解Nginx服務(wù)器中的日志相關(guān)配置,Nginx是擁有高性能的異步非阻塞型服務(wù)器,需要的朋友可以參考下
    2015-08-08
  • Nginx離線安裝的保姆級(jí)教程

    Nginx離線安裝的保姆級(jí)教程

    為了確保gcc-c++和Nginx的正確安裝,建議使用yum工具在線下載rpm包,避免手動(dòng)下載安裝時(shí)出現(xiàn)依賴(lài)缺失的問(wèn)題,本文就來(lái)介紹一下如何離線安裝,感興趣的可以了解一下
    2024-09-09
  • Nginx服務(wù)器下防盜鏈的方法介紹

    Nginx服務(wù)器下防盜鏈的方法介紹

    這篇文章主要介紹了Nginx服務(wù)器下防盜鏈的方法介紹,主要通過(guò)修改服務(wù)器的配置文件來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2015-07-07
  • 云服務(wù)器用nginx配置域名訪問(wèn)前后端分離項(xiàng)目

    云服務(wù)器用nginx配置域名訪問(wèn)前后端分離項(xiàng)目

    本文介紹通過(guò)Nginx反向代理實(shí)現(xiàn)多服務(wù)端口隱藏,統(tǒng)一域名入口訪問(wèn),支持HTTPS自動(dòng)跳轉(zhuǎn),用戶(hù)只需輸入域名即可訪問(wèn)前端、后端及其它服務(wù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-09-09
  • Nginx反向代理在Web應(yīng)用中的實(shí)戰(zhàn)分享

    Nginx反向代理在Web應(yīng)用中的實(shí)戰(zhàn)分享

    本文將介紹Nginx反向代理的基本原理和配置,以及如何利用Nginx實(shí)現(xiàn)高可用性和故障轉(zhuǎn)移,最后,我們將探討如何監(jiān)控Nginx反向代理的性能并進(jìn)行日志分析,需要的朋友可以參考下
    2024-08-08

最新評(píng)論

化德县| 邵阳县| 和田市| 通河县| 祁连县| 明水县| 岳普湖县| 宁河县| 衡阳县| 奇台县| 屯昌县| 工布江达县| 房产| 双城市| 即墨市| 越西县| 德江县| 安顺市| 郧西县| 合水县| 孟津县| 巴中市| 福泉市| 合江县| 东阿县| 丽江市| 竹山县| 凤阳县| 北宁市| 鄂温| 五家渠市| 尼木县| 汤阴县| 克山县| 庆城县| 盐源县| 德兴市| 延寿县| 观塘区| 本溪市| 定边县|