负载均衡四层和七层代理

1. Nginx 七层代理
Nginx 七层代理工作在 OSI 模型的应用层,主要处理 HTTP/HTTPS 协议。它可以根据请求的 URI、域名、请求头等信息进行灵活的请求分发

特点:

  • 灵活性高:可以根据请求的具体内容(如 URL、请求头等)进行复杂的路由和处理。
  • 支持 HTTP/HTTPS:适用于 Web 应用场景,如动静分离、负载均衡等。
  • 性能消耗相对较高:需要解析 HTTP 协议,对性能有一定影响

企业实操案例:

  • 动静分离:在 Web 应用中,静态资源(如图片、CSS、JavaScript)和动态资源(如后端接口)通常需要分开处理。通过 Nginx 七层代理,可以将静态资源直接从 Web 服务器返回,动态请求转发到后端应用服务器
server {
    listen 80;
    server_name example.com;  #域名

    location /static/ {
        root /var/www/html;  #网页根目录
    }

    location / {
        proxy_pass http://backend_servers; #后端端口或者api接口资源
    }
}

负载均衡:将多个后端应用服务器组成一个集群,通过 Nginx 将请求分发到不同的服务器,提高系统的可用性和性能。

格式

upstream backend_servers {      ##定义集群名字
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;    ##集群组员
}

server {
    listen 80;   ##端口
    server_name example.com;   ##域名
    location / {
        proxy_pass http://backend_servers  ##调用集群
    }
}
2. Nginx 四层代理

Nginx 四层代理工作在 OSI 模型的传输层,主要处理 TCP/UDP 流量。它不会解析应用层协议,而是直接转发原始数据包

特点:

  • 性能高:不解析应用层协议,性能损耗小。
  • 通用性强:适用于所有基于 TCP/UDP 的服务,如数据库、Redis、FTP 等

配置简单:相比七层代理,四层代理的配置更为简洁

企业实操案例:

  • 数据库代理:在企业中,数据库通常需要高可用性和负载均衡。通过 Nginx 四层代理,可以将数据库请求分发到多个后端数据库实例

格式

stream {
    upstream db_backend {
        server 192.168.1.10:3306;
        server 192.168.1.11:3306;
    }

    server {
        listen 3306;
        proxy_pass db_backend;
    }
}

Redis 代理:对于 Redis 等缓存服务,Nginx 四层代理可以实现高可用性和负载均衡

格式

stream {
    upstream redis_backend {
        server 10.1.1.10:6379;
        server 10.1.1.11:6379;
    }

    server {
        listen 6379;
        proxy_pass redis_backend;
    }
}
  • 七层代理适用于 Web 应用场景,需要解析 HTTP 协议,灵活性高,但性能消耗较大。
  • 四层代理适用于 TCP/UDP 服务,如数据库、Redis 等,性能高,配置简单,通用性强。

更多推荐