Nginx代理TCP/UDP并测试

本文介绍了如何检查Nginx的stream模块,编译安装支持TCP/UDP代理的Nginx,以及配置文件示例。还提供了UDP Server和Client的简单测试,并提到了TCP服务的测试方法。
摘要由CSDN通过智能技术生成

环境检查

是否开启 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"
	<
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值