nginx 代理ssh ,socket

本文展示了如何使用Nginx的stream模块代理SSH、TCP和UDP连接,包括多组upstream配置、负载均衡、超时设置、缓冲区大小、keepalive及epoll模式等性能优化参数,适用于构建高性能四层代理服务。

作者:zhuge···预计阅读 11 分钟·1,242 阅读·0 评论
nginx 代理ssh ,socket
events {
    worker_connections  1024;
    accept_mutex on;
  }
stream { 
    upstream ssh {
        server 192.168.59.100:22;   #这里IP是虚拟机的,对应虚拟机的IP+Port
    }
    server { 
        listen 22;  #外层通信需要的tcp端口
        proxy_pass ssh;
        proxy_connect_timeout 1h;
        proxy_timeout 1h;
    }
}

worker_rlimit_nofile   18192;  
#Specifies the value for maximum file descriptors that can be opened by this process.
events {
    worker_connections  18192;
}
tcp {  
    timeout 1d;  
    proxy_read_timeout 10d;  
    proxy_send_timeout 10d;  
    proxy_connect_timeout 30;  
  
    upstream tcpend {  
        server 192.168.1.55:7778;  
        server 192.168.1.58:7778;  
        check interval=60000 rise=2 fall=5 timeout=10000 type=tcp;  
    }  
  
    server {  
        server_name  192.168.1.56;  
        listen 192.168.1.56:7777;  
        proxy_pass tcpend;  
        so_keepalive on;  
        tcp_nodelay on;  
    }  
}  

worker_rlimit_nofile   32768;  
#Specifies the value for maximum file descriptors that can be opened by this process.
events {
    use epoll; #支持大量连接和非活动连接,使用epoll模式,将连接从现在的2048增加到32768,Epoll模式将提高并发连接到100K级别, 而且非活跃的连接(连接正常但没有数据或死的连接对象)数量不影响活跃连接的性能。
    worker_connections 32768; 
    multi_accept on; #nginx在已经得到一个新连接的通知时,接收尽可能多的连接
    accept_mutex on; #防止惊群现象发生,默认为on
}
stream
{
    upstream backend{
        server 192.168.22.22:5005;
        server 192.168.22.23:5005;
    }
    server{
        listen 5005;
        proxy_pass backend;
        proxy_connect_timeout 30s;
        proxy_timeout 60s;
        proxy_buffer_size 4k;#保存用户头信息的缓冲区大小
    }

    upstream backend2{
        server 192.168.22.24:5005;
        server 192.168.22.25:5005;
    }
    server{
        #listen 5006 so_keepalive=30m::10;
        listen 5006 so_keepalive=on;//长连接
        proxy_pass backend2;
        proxy_connect_timeout 30s;
        #proxy_timeout 60s;
        proxy_buffer_size 4k;#保存用户头信息的缓冲区大小
		#proxy_buffering off;
        tcp_nodelay=on;#禁用了Nagle算法,允许小包的发送
		#keepalive 65536; 
    }
}
##当 proxy_buffering 处于 on 状态时,Nginx 会尽可能多的将后端服务器返回的内容接收并存储到自己的缓冲区中,这个缓冲区的最大大小是 proxy_buffer_size * proxy_buffers 的内存。

#如果后端返回的消息很大,这些内存都放不下,会被放入到磁盘文件中。临时文件由 proxy_max_temp_file_size 和 proxy_temp_file_write_size 这两个指令决定的。

#当 proxy_buffering 处于 off 状态时,Nginx 不会尽可能的多的从代理 server 中读数据,而是一次最多读 proxy_buffer_size 大小的数据发送给客户端。
#流模块
stream {
    #上游后端
    upstream backend {
        hash $remote_addr consistent;

        server backend1.example.com:12345 weight = 5;
        server 127.0.0.1:12345 max_fails = 3 fail_timeout = 30s;
        server unix:/ tmp / backend3;
    }
    #上游后端
    upstream dns {
       server 192.168.0.1:53535;
       server dns.example.com:53;
    }

    server {
        listen 12345;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }

    server {
        listen 127.0.0.1:53 udp reuseport;
        proxy_timeout 20s;
        proxy_pass dns;
    }

    server {
        listen [::1]:12345;
        proxy_pass unix:/tmp/stream.socket;
    }
}

相关文章

评论

加载中...