nginx—TCP和UDP代理

TCP代理

worker_processes 8;

error_log /usr/local/nginx/logs/error.log notice;
access_log /usr/local/nginx/logs/access.log notice;

events{
    worker_connections 10240;
    use epoll;
}

stream{
    upstream why_server{
        hash $remote_addr consistent;
        server www.why.com:6666 weight=10
        server www.why.com:7777 weight=10
        server www.why.com:8888 weight=10
        server unix:/tmp/socket weight=10
    }


server{
    listen 3333;
    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass why_server
}

特点:

  • TCP代理在stream指令块声明,位于main内,和http同级
  • 反向代理的upstream支持DNS域名配置、权重、故障转移等配置
  • 当proxy_pass代理TCP时,没有http前缀
  • 支持和HTTP一样的连接超时参数

可配置的指令:

proxy_bind:配置后端看到的客户端地址

proxy_download_rate:设置后端服务器读取数据的速度,单位为字节每秒

proxy_next_upstream:无法与当前后端服务连接时,是否转发到下一台服务器

proxy_next_upstream_timeout:转发下一台服务器的等待时间

proxy_next_upstream_tries:转发下一台服务器的尝试次数

prox_pass:设置被代理的服务器地址

resolver:DNS解析地址、缓存时间等

resolver_timeout:DNS解析超时时间,超时后会用上一次解析的IP地址

proxy_protocol_timeout:设置读取proxy协议头的时间,在时间内没有发送完整的包头,则关闭连接

 

UDP做DNS服务反向代理(1.9.13版本以上)

stream{
    resolver_timeout 5s;
    
    upstream why_dns{
        server 114.114.114.114
        server 114.114.115.115
    }
   
    server{
        listen 127.0.0.1:53 udp;
        proxy_responses 1;
        proxy_timeout 20s;
        proxy_pass why_dns
    }

}

 

 

 

你可能感兴趣的:(nginx)