TCP 是许多流行应用程序和服务的协议,例如 LDAP、MySQL 和 RTMP。
UDP(用户数据报协议)是许多流行的非事务性应用程序的协议,例如 DNS、系统日志和 RADIUS。
配置反向代理
打开 NGINX 配置文件并执行以下步骤:
- 创建一个顶级
stream{}
块:
stream { # ... }
2.server{}
在顶级上下文中为每个虚拟服务器定义一个或多个配置块stream {}
。
3.在server{}
每个服务器的配置块中,包含listen
用于定义服务器侦听的IP 地址和/或端口的指令。对于 UDP 流量,还包括该udp
参数。由于 TCP 是stream{}
里上下文的默认协议,因此该listen
指令没有tcp
参数:
stream { server { listen 12345; # ... } server { listen 53 udp; # ... } # ... }
4.包含proxy_pass
用于定义代理服务器或服务器将流量转发到的上游组的指令:
stream { server { listen 12345; #TCP traffic will be forwarded to the "stream_backend" upstream group proxy_pass stream_backend; } server { listen 12346; #TCP traffic will be forwarded to the specified server proxy_pass backend.example.com:12346; } server { listen 53 udp; #UDP traffic will be forwarded to the "dns_servers" upstream group proxy_pass dns_servers; } # ... }
5.如果代理服务器有多个网络接口,您可以选择将 NGINX 配置为在连接到上游服务器时使用特定的源 IP 地址。如果 NGINX 后面的代理服务器配置为接受来自特定 IP 网络或 IP 地址范围的连接,这可能很有用。
包括proxy_bind
相应网络接口的指令和 IP 地址:
stream { # ... server { listen 127.0.0.1:12345; proxy_pass backend.example.com:12345; proxy_bind 127.0.0.1:12345; } }
6.或者,您可以调整两个内存缓冲区的大小,NGINX 可以在其中放置来自客户端和上游连接的数据。如果数据量较小,可以减少缓冲区,这样可以节省内存资源。如果数据量较大,可以增加缓冲区大小,以减少socket读写操作的次数。一旦一个连接上收到数据,NGINX 就会读取它并通过另一个连接转发它。缓冲区由proxy_buffer_size
指令控制:
stream { # ... server { listen 127.0.0.1:12345; proxy_pass backend.example.com:12345; proxy_buffer_size 16k; } }
配置 TCP 或 UDP 负载平衡
等之后有时间再来写啦~
参考
https://nginxproxymanager.com/advanced-config/#custom-nginx-configurations
https://administrator.de/forum/reverse-proxy-fuer-tcp-und-udp-anfragen-398930.html
https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/