1. Nginx代理功能概述
Nginx作为一款高性能的Web服务器和反向代理服务器,其代理能力不仅限于HTTP/HTTPS协议。从1.9.0版本开始,Nginx通过引入stream模块,原生支持了TCP和UDP协议的代理功能。这个特性使得Nginx可以胜任更多场景的网络流量转发工作,比如数据库负载均衡、游戏服务器代理、DNS流量转发等。
在实际生产环境中,我们经常遇到需要将TCP/UDP服务暴露给外部访问,但又希望增加安全层、负载均衡或高可用机制的场景。传统方案可能需要专门部署LVS或HAProxy等工具,而现在通过Nginx的stream模块就能一站式解决。
注意:TCP/UDP代理功能需要Nginx编译时包含--with-stream配置参数。主流Linux发行版的预编译包通常已包含此模块,但自行编译时需要确认。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心配置解析
2.1 基础配置结构
Nginx的TCP/UDP代理配置与HTTP代理配置相互独立,需要在主配置文件nginx.conf的顶层使用stream上下文(与http上下文同级)。一个典型的配置结构如下:
nginx复制# 主配置文件nginx.conf
worker_processes auto;
events {
worker_connections 1024;
}
# HTTP相关配置
http {
...
}
# TCP/UDP代理配置
stream {
# TCP代理示例
server {
listen 3306;
proxy_pass db_backend;
}
# UDP代理示例
server {
listen 53 udp;
proxy_pass dns_servers;
}
# 上游服务器组定义
upstream db_backend {
server 192.168.1.101:3306;
server 192.168.1.102:3306;
}
upstream dns_servers {
server 8.8.8.8:53;
server
