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

Nginx四層負載均衡配置以及Stream模塊使用

 更新時間:2026年01月26日 10:19:08   作者:終端行者  
文章介紹了如何在Nginx中配置四層負載均衡,包括stream塊的使用、upstream和server的定義,以及與七層負載均衡的對比,文章還詳細講解了負載均衡的算法、配置參數、實際應用場景以及一些優(yōu)化建議,感興趣的朋友跟隨小編一起看看吧

我們使用stream模塊配置四層負載均衡(TCP/UDP)。注意:四層負載均衡通常用于數據庫、SSH、游戲服務器等基于TCP/UDP的服務,而不像七層負載均衡(HTTP)那樣處理應用層協(xié)議。

在Nginx中配置四層負載均衡,需要在stream塊中定義upstream和server。

什么是四層負載均衡

  • 工作在OSI模型的傳輸層(TCP/UDP)
  • 基于IP地址和端口進行轉發(fā)
  • 不解析應用層協(xié)議(如HTTP)
  • 性能更高,延遲更小

與七層負載均衡對比

特性四層負載均衡七層負載均衡
OSI層傳輸層(4層)應用層(7層)
轉發(fā)依據IP+端口URL、Header、Cookie等
性能更高相對較低
協(xié)議支持TCP/UDPHTTP/HTTPS/FTP等
配置模塊streamhttp

核心配置文件結構

# 主配置文件 nginx.conf
events {
    worker_connections 1024;
}
# 四層負載均衡配置塊
stream {
    # 上游服務器組定義
    upstream backend_servers {
        # 負載均衡算法
        # 服務器配置
    }
    # 服務監(jiān)聽配置
    server {
        # 監(jiān)聽端口
        # 代理設置
    }
}

最小化配置示例

events {
    worker_connections 1024;
}
stream {
    # 定義上游服務器組
    upstream mysql_servers {
        server 192.168.1.101:3306 weight=3;
        server 192.168.1.102:3306 weight=2;
        server 192.168.1.103:3306 weight=1;
    }
    # 監(jiān)聽3307端口,轉發(fā)到MySQL集群
    server {
        listen 3307;
        proxy_pass mysql_servers;
        proxy_timeout 3s;
        proxy_connect_timeout 2s;
    }
}

詳細配置參數

上游服務器配置

upstream backend {
    # 負載均衡算法
    hash $remote_addr consistent;  # 一致性哈希
    # least_conn;                  # 最少連接
    # random;                     # 隨機算法
    # round-robin;                # 輪詢(默認)
    # 服務器參數
    server backend1.example.com:8080 weight=5;
    server backend2.example.com:8080 weight=3;
    server backup1.example.com:8080 backup;  # 備份服務器
    server backup2.example.com:8080 down;    # 標記為下線
    # 健康檢查
    health_check interval=10s passes=2 fails=3;
    # 連接參數
    zone backend_cluster 64k;      # 共享內存區(qū)域
    keepalive 32;                  # 保持連接數
    keepalive_timeout 60s;         # 保持連接超時
}

服務器監(jiān)聽配置

server {
    # 基本監(jiān)聽
    listen 1935;                    # TCP端口
    listen 1935 udp;               # UDP端口
    listen 1935 ssl;               # SSL/TLS
    listen [::]:1935 ipv6only=on;  # IPv6
    # 代理設置
    proxy_pass backend;
    proxy_timeout 10s;            # 代理超時
    proxy_connect_timeout 5s;      # 連接超時
    # 緩沖設置
    proxy_buffer_size 16k;         # 緩沖區(qū)大小
    proxy_download_rate 1m;        # 下載限速
    proxy_upload_rate 512k;        # 上傳限速
    # SSL配置
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    # 日志
    access_log /var/log/nginx/tcp-access.log;
    error_log /var/log/nginx/tcp-error.log;
}

負載均衡算法詳解

輪詢算法(默認)

upstream backend {
    # 默認即為輪詢
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

加權輪詢

upstream backend {
    server 192.168.1.10:8080 weight=5;  # 50%流量
    server 192.168.1.11:8080 weight=3;  # 30%流量
    server 192.168.1.12:8080 weight=2;  # 20%流量
}

最少連接

upstream backend {
    least_conn;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

一致性哈希

upstream backend {
    hash $remote_addr consistent;  # 基于客戶端IP
    # hash $binary_remote_addr;    # 二進制格式IP
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

隨機算法

upstream backend {
    random;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

實際應用場景

MySQL負載均衡

stream {
    upstream mysql_master_slave {
        # 主庫寫操作
        server 192.168.1.100:3306 weight=5;
        # 從庫讀操作
        server 192.168.1.101:3306 weight=3;
        server 192.168.1.102:3306 weight=2;
        # 備份服務器
        server 192.168.1.103:3306 backup;
    }
    # 讀寫分離代理
    server {
        listen 3306;
        proxy_pass mysql_master_slave;
        proxy_timeout 5s;
        proxy_connect_timeout 2s;
        # 日志記錄
        access_log /var/log/nginx/mysql-access.log stream;
        # 連接限制
        proxy_download_rate 2m;
        proxy_upload_rate 1m;
    }
}

Redis集群代理

stream {
    upstream redis_cluster {
        hash $remote_addr consistent;
        server 192.168.1.10:6379;
        server 192.168.1.11:6379;
        server 192.168.1.12:6379;
        # 健康檢查
        health_check interval=5s;
    }
    server {
        listen 6379;
        proxy_pass redis_cluster;
        proxy_timeout 2s;
        proxy_buffer_size 4k;
    }
}

SSH跳板機

stream {
    upstream ssh_servers {
        least_conn;
        server 192.168.1.10:22;
        server 192.168.1.11:22;
        server 192.168.1.12:22;
    }
    server {
        listen 2222;
        proxy_pass ssh_servers;
        proxy_timeout 1h;
        proxy_connect_timeout 10s;
        # 訪問控制
        allow 10.0.0.0/8;
        deny all;
        # 連接數限制
        proxy_download_rate 512k;
        proxy_upload_rate 256k;
    }
}

DNS負載均衡

stream {
    upstream dns_servers {
        # DNS over UDP
        server 192.168.1.10:53;
        server 192.168.1.11:53;
    }
    server {
        listen 53 udp reuseport;  # UDP負載均衡
        proxy_pass dns_servers;
        proxy_timeout 3s;
        # 緩沖區(qū)設置
        proxy_buffer_size 4k;
    }
}

SSL/TLS終止

stream {
    upstream backend_servers {
        server 192.168.1.10:443;
        server 192.168.1.11:443;
    }
    server {
        listen 443 ssl;
        proxy_pass backend_servers;
        # SSL配置
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        # SSL會話恢復
        ssl_session_tickets on;
    }
}

TCP優(yōu)化參數

server {
    listen 8080;
    proxy_pass backend;
    # TCP優(yōu)化
    tcp_nodelay on;           # 禁用Nagle算法
    tcp_nopush on;            # 優(yōu)化發(fā)送數據包
    so_keepalive on;          # 啟用TCP keepalive
    proxy_socket_keepalive on; # 代理連接保持活躍
    # 超時設置
    proxy_connect_timeout 5s;
    proxy_timeout 300s;
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
    # 緩沖區(qū)優(yōu)化
    proxy_buffer_size 16k;
    proxy_buffers 8 16k;
    proxy_busy_buffers_size 32k;
}

連接數限制

stream {
    # 定義限制區(qū)域
    limit_conn_zone $binary_remote_addr zone=per_ip:10m;
    limit_conn_zone $server_name zone=per_server:10m;
    upstream backend {
        server 192.168.1.10:8080;
    }
    server {
        listen 8080;
        proxy_pass backend;
        # 連接限制
        limit_conn per_ip 10;      # 每個IP最多10個連接
        limit_conn per_server 100; # 本服務最多100個連接
        # 連接速率限制
        limit_rate_after 1m;        # 1MB后開始限速
        limit_rate 100k;            # 限速100KB/s
    }
}

日志配置

stream {
    # 自定義日志格式
    log_format tcp_log '$remote_addr [$time_local] '
                      '$protocol $status $bytes_sent $bytes_received '
                      '$session_time "$upstream_addr"';
    upstream backend {
        server 192.168.1.10:8080;
    }
    server {
        listen 8080;
        proxy_pass backend;
        # 訪問日志
        access_log /var/log/nginx/tcp-access.log tcp_log;
        error_log /var/log/nginx/tcp-error.log warn;
        # 日志級別
        error_log /var/log/nginx/debug.log debug;
    }
}

DDoS防護

stream {
    # 限制連接速率
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    server {
        listen 80;
        # 連接數限制
        limit_conn conn_limit_per_ip 20;
        limit_req zone=req_limit_per_ip burst=30 nodelay;
        # 超時設置防止慢連接攻擊
        proxy_connect_timeout 5s;
        proxy_timeout 30s;
    }
}

到此這篇關于Nginx四層負載均衡配置以及Stream模塊使用的文章就介紹到這了,更多相關Nginx Stream模塊內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 關閉nginx空主機頭 防止nginx空主機頭及惡意域名指向

    關閉nginx空主機頭 防止nginx空主機頭及惡意域名指向

    nginx的默認配置中的虛擬主機允許用戶通過IP訪問,或者通過未設置的域名訪問,比如有人惡意把他自己的域名指向了你的ip,需要的朋友可以參考下
    2016-09-09
  • nginx子目錄代理的實現(xiàn)示例

    nginx子目錄代理的實現(xiàn)示例

    本文主要介紹了nginx子目錄代理的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-01-01
  • CentOS6.6 安裝 Tengine 筆記

    CentOS6.6 安裝 Tengine 筆記

    這篇文章主要介紹了CentOS6.6 安裝 Tengine 筆記,本文講解了安裝必要的編譯環(huán)境好、安裝需要的組件、安裝Tengine等步驟,需要的朋友可以參考下
    2015-03-03
  • nginx+tomcat 通過域名訪問項目的實例

    nginx+tomcat 通過域名訪問項目的實例

    這篇文章主要介紹了nginx+tomcat 通過域名訪問項目的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Nginx日志輪轉與定時啟動腳本的實現(xiàn)

    Nginx日志輪轉與定時啟動腳本的實現(xiàn)

    本文主要介紹了Nginx日志輪轉與定時啟動腳本的實現(xiàn),通過批處理腳本rotate-logs.bat實現(xiàn)日志輪轉,使用start-nginx.bat啟動和重啟Nginx服務,借助Windows任務計劃程序每日凌晨自動執(zhí)行日志輪轉,確保Nginx服務正常啟動,感興趣的可以了解一下
    2026-04-04
  • Nginx 反向代理配置避坑指南(proxy_pass 斜杠、502排查、CORS、文件上傳)

    Nginx 反向代理配置避坑指南(proxy_pass 斜杠、502排查、CORS、文件上傳)

    本文系統(tǒng)總結了Docker環(huán)境下Nginx反向代理配置的10個常見問題及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-03-03
  • nginx配置文件目錄過程

    nginx配置文件目錄過程

    文章介紹了在本地使用VSCode打開Nginx配置文件時發(fā)現(xiàn)未指定配置文件目錄的問題,通過查看Nginx官網和默認配置文件目錄未找到配置文件,最終通過`nginx?-V`命令確認了Nginx在編譯時指定了配置文件目錄
    2025-11-11
  • nginx下部署vue項目的方法步驟

    nginx下部署vue項目的方法步驟

    這篇文章主要介紹了nginx下部署vue項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Nginx+Tomcat群集的實現(xiàn)示例

    Nginx+Tomcat群集的實現(xiàn)示例

    這篇文章主要介紹了Nginx+Tomcat群集的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • nginx basic認證的實現(xiàn)示例

    nginx basic認證的實現(xiàn)示例

    auth_basic作為一個認證模塊,在apache和nginx中都很常用,本文主要介紹了nginx basic認證的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08

最新評論

秀山| 尚志市| 石柱| 喀喇沁旗| 三江| 巴林右旗| 衡阳市| 丰县| 休宁县| 马鞍山市| 杭州市| 南康市| 搜索| 博乐市| 沅陵县| 全州县| 房山区| 堆龙德庆县| 黄山市| 武邑县| 武清区| 高淳县| 巴马| 韶关市| 云浮市| 讷河市| 太白县| 麻城市| 宣城市| 鹿泉市| 元谋县| 四会市| 乐安县| 青海省| 仙桃市| 屏东县| 竹北市| 临澧县| 大石桥市| 丰都县| 秭归县|