Nginx 代理TCP/UDP 端口

Nginx 在1.9版本后新增TCP/UDP 代理

Nginx默认是没有开启TCP/UDP代理。需要在编译Nginx是添加--with-stream进行开启。

编译安装Nginx

tar zxf cd nginx-1.16.1.tar.gz
cd nginx-1.16.1/
./configure  --user=www --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre --with-stream
make
make install
修改nginx.conf配置文件
user www www;
worker_processes 4;
error_log /data/log/nginx_log/nginx_error.log notice;
pid /usr/local/nginx/sbin/nginx.pid;
worker_rlimit_nofile 204800;
events
        {
        use epoll;
        worker_connections 204800;
        }
http
        {
        include mime.types;
        default_type  application/octet-stream;
        charset utf-8;
        server_tokens off;
        server_names_hash_bucket_size 512;
        client_header_buffer_size 512k;
        large_client_header_buffers 64 512k;
        client_max_body_size 100m;
        proxy_ignore_client_abort on;
        sendfile on;
        tcp_nopush on;
        keepalive_timeout 120;
        keepalive_requests 1024;
        fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=30d max_size=3096m;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 4k;
        fastcgi_buffers 8 4k;
        fastcgi_busy_buffers_size 8k;
        fastcgi_temp_file_write_size 8k;
#       fastcgi_cache TEST;
        fastcgi_cache_valid 200 302 1h;
        fastcgi_cache_valid 301 1d;
        fastcgi_cache_valid any 1m;
        fastcgi_cache_min_uses 1;
        fastcgi_cache_use_stale error timeout invalid_header http_500;
        open_file_cache max=204800 inactive=20s;
        open_file_cache_min_uses 1;
        open_file_cache_valid 60s;
        tcp_nodelay on;
        gzip on;
        gzip_min_length 1k;
        gzip_buffers 16 64k;
        gzip_http_version 1.1;
        gzip_comp_level 6;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
        gzip_vary on;
        log_format access '$remote_addr - $remote_user [$time_local] "$request" '
                         '"$status" $body_bytes_sent "$http_referer" '
                         '"$http_user_agent" "$http_x_forwarded_for" '
                         '"$upstream_addr" "$upstream_status" "$request_time" "$upstream_response_time" $bytes_sent $request_length';

include  /usr/local/nginx/conf/vhosts/*.conf;
}

stream
    {
        include  /usr/local/nginx/conf/ports/*.conf;
}

 由于http 和 stream是两个不同的模块,所以不能写在一些

在http下面新增stream的配置信息

编写代理ports配置文件
代理UDP文件:
vi /usr/local/nginx/conf/ports/udp.conf
upstream backend {
        server 192.168.6.110:1812;
    }
server {
        listen 8686 udp reuseport;
        proxy_connect_timeout 8s;
        proxy_timeout 24h;   #代理超时
        proxy_pass backend;
        proxy_responses 1;
}
代理TCP
upstream backend {
        server 10.7.2.86:1521;
    }
server {
        listen 8686;
        proxy_connect_timeout 8s;
        proxy_timeout 24h;   #代理超时
        proxy_pass backend;
    }  

启动Nginx,进行测试