Nginx代理TCP/UDP并测试

Nginx代理TCP/UDP并测试

  • 环境检查
    • 是否开启 stream
    • 编译安装Nginx
  • 配置文件
  • 可用性测试
    • UDP
      • UDP Server
      • UDP Client
    • 参考

环境检查

是否开启 stream

nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层代理和负载均衡。

默认编译时该模块未编译进去,需要编译时添加 --with-stream,–with-stream_ssl_module,使其支持stream代理。

# 查看当前 Nginx 是否支持 stream 模块
2>&1 nginx -V | tr ' ' '\n'|grep stream
# 说明支持 stream 模块
--with-stream

编译安装Nginx

如果没有安装 Nginx, 可以使用源码编译安装的方式安装 Nginx, 并开启 stream 模块,编译时如果相关编译所需依赖没有,centos 直接 yum 下载即可。

cd /usr/local/src
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar zxf nginx-1.12.1.tar.gz
cd nginx-1.12.1
./configure --prefix=/usr/local/nginx --with-stream
make && make install

配置文件

以下为 Nginx 完整配置文件,分别监听 8080 端口转发 udp 服务和 7778 端口转发 tcp 服务。

user root;
worker_processes  auto;

error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
#access_log logs/access.log;
#pid        logs/nginx.pid;

events {
    use epoll;
    worker_connections  1024;
}


stream {
    proxy_timeout 30s;
    
    upstream udp_server {
        server 127.0.0.1:20000;
    }

   log_format main '$remote_addr -  [$time_local] '
                       ' $status $bytes_sent ';

   server {
      listen 8080 udp;
      proxy_pass udp_server;
      #proxy_bind $remote_addr transparent;
      access_log /usr/local/nginx/logs/domain.access.log main;
    }


    server {
        listen 7778;
        proxy_pass tcp_server;
    }

    upstream tcp_server {
        least_conn;
        server 127.0.0.1:7777;
    }
}

可用性测试

这里可以使用 Go 编写简单的 tcp/udp 服务。

UDP

UDP Server

udp_server.go

package main

import (
	"fmt"
	<

你可能感兴趣的:(nginx,tcp/ip,udp)