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

Linux?中?Nginx?代理?Redis?的詳細(xì)步驟

 更新時(shí)間:2026年05月06日 09:40:20   作者:0xDevNull  
本文介紹了使用Nginx代理Redis的方法,包括檢查和配置Nginx的stream模塊進(jìn)行TCP代理,實(shí)現(xiàn)安全訪問(wèn)、負(fù)載均衡和高可用性,還討論了Nginx緩存配置與Redis的配合,并提供了安全和優(yōu)化建議,感興趣的朋友跟隨小編一起看看吧

在實(shí)際的生產(chǎn)環(huán)境中,我們通常不希望將 Redis 等中間件服務(wù)直接暴露在公網(wǎng)中。通過(guò) Nginx 代理 Redis,可以實(shí)現(xiàn)安全訪問(wèn)、負(fù)載均衡以及高可用性。

本教程將詳細(xì)介紹如何使用 Nginx 的 stream 模塊代理 Redis 的 TCP 連接,以及如何配置 Nginx 緩存來(lái)配合 Redis。

? 1. 環(huán)境準(zhǔn)備與模塊檢查

Nginx 代理 Redis 主要依賴 stream 模塊(用于 TCP/UDP 代理)。大多數(shù)現(xiàn)代 Nginx 版本(1.9.0+)默認(rèn)包含此模塊,但我們需要確認(rèn)。

檢查 Nginx 版本及編譯參數(shù):

在終端執(zhí)行以下命令:

nginx -V

查看輸出結(jié)果:
尋找 --with-stream 字樣。

  • 如果有:直接進(jìn)行下一步。
  • 如果沒(méi)有:你需要重新編譯 Nginx 并添加該模塊。

注意:如果你使用的是包管理器(如 yumapt)安裝的 Nginx,通常 stream 模塊是默認(rèn)開(kāi)啟的。

? 2. 核心配置:使用 Stream 模塊代理 TCP 連接

這是最常用的場(chǎng)景,用于隱藏真實(shí)的 Redis 服務(wù)器地址,或者為 Redis 集群提供統(tǒng)一的入口。

2.1 編輯 Nginx 配置文件

打開(kāi)主配置文件,通常位于 /etc/nginx/nginx.conf。

2.2 添加 Stream 配置塊

在配置文件的頂層(與 http 塊同級(jí)),添加 stream 塊。

場(chǎng)景 A:?jiǎn)螜C(jī)代理(基礎(chǔ)轉(zhuǎn)發(fā))

stream {
    # 定義 Redis 后端服務(wù)器組
    upstream redis_backend {
        server 127.0.0.1:6379; # 真實(shí)的 Redis 地址
    }
    # 配置代理服務(wù)器
    server {
        listen 6379; # Nginx 監(jiān)聽(tīng)的端口
        proxy_pass redis_backend; # 轉(zhuǎn)發(fā)到后端
        proxy_timeout 3s; # 連接超時(shí)
        proxy_connect_timeout 1s;
    }
}

場(chǎng)景 B:高可用與負(fù)載均衡(推薦)

如果你有 Redis 主從架構(gòu)或多個(gè)分片,可以配置多個(gè)后端。

stream {
    upstream redis_backend {
        # 簡(jiǎn)單的輪詢負(fù)載均衡
        server 192.168.1.46:6379;
        server 192.168.1.47:6379;
        # 或者使用權(quán)重(性能好的機(jī)器權(quán)重高)
        # server 192.168.1.46:6379 weight=3;
        # server 192.168.1.47:6379 weight=1;
    }
    server {
        listen 6379;
        proxy_pass redis_backend;
        # 健康檢查(Nginx Plus 功能,開(kāi)源版支持有限,通常依賴被動(dòng)檢查)
        # health_check interval=5s; 
    }
}

2.3 測(cè)試并重啟

  1. 測(cè)試配置語(yǔ)法:
  2. 如果顯示 syntax is oktest is successful,則繼續(xù)。
  3. 重載配置:

2.4 驗(yàn)證代理

使用 redis-cli 連接 Nginx 的 IP,看是否能成功操作 Redis:

redis-cli -h <Nginx服務(wù)器IP> -p 6379

3. 進(jìn)階配置:Nginx HTTP 緩存配合 Redis

除了 TCP 代理,Nginx 還可以作為 HTTP 反向代理,將動(dòng)態(tài)請(qǐng)求的響應(yīng)緩存在本地,或者利用 Redis 作為存儲(chǔ)后端(需第三方模塊)。這里介紹標(biāo)準(zhǔn)的 Nginx 本地文件緩存 模式,這通常用于減輕 Redis 或后端應(yīng)用的壓力。

3.1 定義緩存路徑

http 塊中定義緩存空間:

http {
    # 定義緩存路徑、內(nèi)存區(qū)域大小(keys_zone)、最大磁盤空間(max_size)
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
    server {
        listen 80;
        server_name example.com;
        location / {
            # 啟用緩存
            proxy_cache my_cache;
            # 緩存鍵:根據(jù)URL、請(qǐng)求方法等生成唯一標(biāo)識(shí)
            proxy_cache_key "$scheme$request_method$host$request_uri";
            # 緩存有效期:200狀態(tài)碼緩存1小時(shí),其他緩存5分鐘
            proxy_cache_valid 200 1h;
            proxy_cache_valid any 5m;
            # 后端地址(這里可以是你的應(yīng)用服務(wù)器,應(yīng)用服務(wù)器再去讀Redis)
            proxy_pass http://127.0.0.1:8080;
            # 添加緩存狀態(tài)頭,方便調(diào)試
            add_header X-Cache-Status $upstream_cache_status;
        }
    }
}

3.2 創(chuàng)建緩存目錄

確保 Nginx 有權(quán)限寫(xiě)入緩存目錄:

mkdir -p /var/cache/nginx
chown nginx:nginx /var/cache/nginx # 根據(jù)實(shí)際運(yùn)行用戶調(diào)整

? 4. 安全與優(yōu)化建議

在使用 Nginx 代理 Redis 時(shí),請(qǐng)務(wù)必注意以下幾點(diǎn):

  1. 防火墻配置
    • 雖然 Nginx 代理了 Redis,但建議在防火墻(如 firewalldiptables)中,僅開(kāi)放 Nginx 的代理端口(如 6379),并嚴(yán)格限制訪問(wèn)來(lái)源 IP。
    • 真實(shí) Redis 服務(wù)器的 6379 端口 應(yīng)該只對(duì) Nginx 服務(wù)器的內(nèi)網(wǎng) IP 開(kāi)放,不要對(duì)公網(wǎng)開(kāi)放。
  2. SSL/TLS 加密
    • 如果通過(guò)公網(wǎng)傳輸 Redis 數(shù)據(jù),建議在 Nginx 層配置 SSL 證書(shū),或者在 Redis 內(nèi)部開(kāi)啟 TLS 支持,防止密碼和數(shù)據(jù)被嗅探。
  3. 超時(shí)設(shè)置
    • stream 模塊中,合理設(shè)置 proxy_timeout。Redis 的長(zhǎng)連接如果被 Nginx 過(guò)早切斷,會(huì)導(dǎo)致客戶端報(bào)錯(cuò)。通常建議設(shè)置較長(zhǎng)的超時(shí)時(shí)間或保持默認(rèn)。
  4. 避免 HTTP 協(xié)議混淆
    • 不要試圖在 http 塊中使用 proxy_pass 直接代理 Redis 的 TCP 端口。Redis 使用的是自定義的 TCP 協(xié)議(RESP),不是 HTTP 協(xié)議,必須使用 stream 模塊進(jìn)行四層代理。

通過(guò)以上配置,你可以構(gòu)建一個(gè)安全、穩(wěn)定且具備一定緩存能力的 Nginx + Redis 架構(gòu)。

到此這篇關(guān)于Linux 中 Nginx 代理 Redis 的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Nginx 代理 Redis 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

道真| 博爱县| 鹤峰县| 白城市| 新干县| 新化县| 巢湖市| 获嘉县| 项城市| 柘荣县| 巴东县| 卢龙县| 改则县| 綦江县| 安陆市| 上蔡县| 贡山| 高雄县| 青铜峡市| 福州市| 凉城县| 吴桥县| 金山区| 葫芦岛市| 安多县| 商城县| 皋兰县| 信阳市| 临潭县| 武平县| 伊吾县| 海安县| 临沂市| 尼勒克县| 建德市| 岳阳市| 革吉县| 昌江| 尉氏县| 益阳市| 苍溪县|