Nginx stream模块详细说明以及案例
2025-03-09
7
Nginx的stream模块用于处理TCP和UDP流量,通常用于负载均衡、代理和SSL终止等场景。以下是详细说明和案例:
1. 基本配置
stream模块的配置通常放在nginx.conf
的主配置文件中,与http
模块并列。
stream { upstream backend { server 192.168.1.1:12345; server 192.168.1.2:12345; } server { listen 12345; proxy_pass backend; } }
2. 负载均衡
stream模块支持多种负载均衡算法,如轮询(默认)、加权轮询、IP哈希等。
stream { upstream backend { server 192.168.1.1:12345 weight=2; server 192.168.1.2:12345; } server { listen 12345; proxy_pass backend; } }
3. SSL终止
stream模块支持SSL终止,可以在Nginx上终止SSL连接,然后将明文流量转发到后端服务器。
stream { upstream backend { server 192.168.1.1:12345; } server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; proxy_pass backend; } }
4. UDP代理
stream模块也支持UDP流量的代理。
stream { upstream dns_servers { server 192.168.1.1:53; server 192.168.1.2:53; } server { listen 53 udp; proxy_pass dns_servers; } }
5. 健康检查
stream模块支持健康检查,确保后端服务器的可用性。
stream { upstream backend { server 192.168.1.1:12345; server 192.168.1.2:12345; health_check interval=10s; } server { listen 12345; proxy_pass backend; } }
6. 日志记录
stream模块支持日志记录,可以记录TCP/UDP连接的详细信息。
stream { log_format basic '$remote_addr [$time_local] $status'; access_log /var/log/nginx/stream_access.log basic; upstream backend { server 192.168.1.1:12345; } server { listen 12345; proxy_pass backend; } }
7. 案例:MySQL负载均衡
假设你有多个MySQL服务器,可以使用stream模块进行负载均衡。
stream { upstream mysql_servers { server 192.168.1.1:3306; server 192.168.1.2:3306; } server { listen 3306; proxy_pass mysql_servers; } }
8. 案例:Redis负载均衡
假设你有多个Redis服务器,可以使用stream模块进行负载均衡。
stream { upstream redis_servers { server 192.168.1.1:6379; server 192.168.1.2:6379; } server { listen 6379; proxy_pass redis_servers; } }
9. 案例:DNS负载均衡
假设你有多个DNS服务器,可以使用stream模块进行负载均衡。
stream { upstream dns_servers { server 192.168.1.1:53; server 192.168.1.2:53; } server { listen 53 udp; proxy_pass dns_servers; } }
10. 案例:SSL终止
假设你有一个HTTPS服务,可以在Nginx上终止SSL连接,然后将明文流量转发到后端服务器。
stream { upstream backend { server 192.168.1.1:8080; } server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; proxy_pass backend; } }
这些案例展示了stream模块的多种用途,包括负载均衡、SSL终止、UDP代理等。根据实际需求,可以灵活配置。
本篇文章内容来源于:Nginx stream模块详细说明以及案例
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。