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

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

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

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

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

什么是四層負(fù)載均衡

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

與七層負(fù)載均衡對比

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

核心配置文件結(jié)構(gòu)

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

最小化配置示例

events {
    worker_connections 1024;
}
stream {
    # 定義上游服務(wù)器組
    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端口,轉(zhuǎn)發(fā)到MySQL集群
    server {
        listen 3307;
        proxy_pass mysql_servers;
        proxy_timeout 3s;
        proxy_connect_timeout 2s;
    }
}

詳細(xì)配置參數(shù)

上游服務(wù)器配置

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

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

server {
    # 基本監(jiān)聽
    listen 1935;                    # TCP端口
    listen 1935 udp;               # UDP端口
    listen 1935 ssl;               # SSL/TLS
    listen [::]:1935 ipv6only=on;  # IPv6
    # 代理設(shè)置
    proxy_pass backend;
    proxy_timeout 10s;            # 代理超時(shí)
    proxy_connect_timeout 5s;      # 連接超時(shí)
    # 緩沖設(shè)置
    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;
}

負(fù)載均衡算法詳解

輪詢算法(默認(rèn))

upstream backend {
    # 默認(rèn)即為輪詢
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

加權(quán)輪詢

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;    # 二進(jìn)制格式IP
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

隨機(jī)算法

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

實(shí)際應(yīng)用場景

MySQL負(fù)載均衡

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;
        # 備份服務(wù)器
        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跳板機(jī)

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;
        # 連接數(shù)限制
        proxy_download_rate 512k;
        proxy_upload_rate 256k;
    }
}

DNS負(fù)載均衡

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負(fù)載均衡
        proxy_pass dns_servers;
        proxy_timeout 3s;
        # 緩沖區(qū)設(shè)置
        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會話恢復(fù)
        ssl_session_tickets on;
    }
}

TCP優(yōu)化參數(shù)

server {
    listen 8080;
    proxy_pass backend;
    # TCP優(yōu)化
    tcp_nodelay on;           # 禁用Nagle算法
    tcp_nopush on;            # 優(yōu)化發(fā)送數(shù)據(jù)包
    so_keepalive on;          # 啟用TCP keepalive
    proxy_socket_keepalive on; # 代理連接保持活躍
    # 超時(shí)設(shè)置
    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;
}

連接數(shù)限制

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;      # 每個(gè)IP最多10個(gè)連接
        limit_conn per_server 100; # 本服務(wù)最多100個(gè)連接
        # 連接速率限制
        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防護(hù)

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;
        # 連接數(shù)限制
        limit_conn conn_limit_per_ip 20;
        limit_req zone=req_limit_per_ip burst=30 nodelay;
        # 超時(shí)設(shè)置防止慢連接攻擊
        proxy_connect_timeout 5s;
        proxy_timeout 30s;
    }
}

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

相關(guān)文章

  • 關(guān)閉nginx空主機(jī)頭 防止nginx空主機(jī)頭及惡意域名指向

    關(guān)閉nginx空主機(jī)頭 防止nginx空主機(jī)頭及惡意域名指向

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

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

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

    CentOS6.6 安裝 Tengine 筆記

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

    nginx+tomcat 通過域名訪問項(xiàng)目的實(shí)例

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

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

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

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

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

    nginx配置文件目錄過程

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

    nginx下部署vue項(xiàng)目的方法步驟

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

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

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

    nginx basic認(rèn)證的實(shí)現(xiàn)示例

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

最新評論

鄂托克前旗| 榕江县| 万山特区| 彭泽县| 五指山市| 禄劝| 凯里市| 江西省| 牙克石市| 儋州市| 顺昌县| 呼玛县| 博罗县| 普陀区| 周宁县| 孟村| 万荣县| 宁南县| 德保县| 日照市| 乳山市| 金阳县| 邵东县| 阳东县| 本溪市| 绥化市| 沁阳市| 江永县| 墨竹工卡县| 津市市| 荣成市| 株洲市| 遂川县| 长岭县| 桂阳县| 马关县| 蒲江县| 赤城县| 佛坪县| 桃源县| 贺兰县|