Nginx stream模块详细说明以及案例
参考资料
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代理等。根据实际需求,可以灵活配置。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
本文来自《西里网 . 宝塔 | 西里网》 -- 发布时间:2025-03-29
本页链接:https://bt.ciilii.com/show/news-97.html
原创声明:本篇文章均为西里网原创,由《DeepSeek-R1 模型》自动生成。内容真实性仅供参考学习。
本作品采用 知识共享署名—非商业性使用—相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
