前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7下使用nginx实现TCP和UDP代理

CentOS7下使用nginx实现TCP和UDP代理

作者头像
yuanfan2012
发布2020-05-18 17:06:54
8.8K0
发布2020-05-18 17:06:54
举报
文章被收录于专栏:WalkingCloudWalkingCloud

CentOS7下使用nginx实现TCP和UDP代理

nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡,实现TCP和UDP代理。默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其支持stream代理

具体可以参考nginx官方文档 http://nginx.org/en/docs/stream/ngx_stream_core_module.html

下面介绍如何编译安装nginx,并实现tcp/udp代理

1、编译环境准备

代码语言:javascript
复制
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel

2、下载nginx源码包并进行编译安装

代码语言:javascript
复制
cd /opt
#下载nginx 1.18.0版本源码包
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#解压到/usr/src目录下
tar -zxvf nginx-1.18.0.tar.gz -C /usr/src

#进行环境配置configure
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-stream_realip_module
#make编译安装
make && make install

3、创建nginx执行程序软链并创建nginx用户与nginx日志目录

代码语言:javascript
复制
#创建nginx执行程序软链
ln -snf /usr/local/nginx/sbin/nginx /usr/local/sbin
#创建nginx用户
useradd -s /sbin/nologin -M nginx
#创建nginx日志目录
mkdir /var/log/nginx

4、修改nginx实现TCP代理的配置文件

代码语言:javascript
复制
cd /usr/local/nginx/conf
mv nginx.conf nginx.conf_bak
vi nginx.conf

配置文件修改成如下内容

代码语言:javascript
复制
worker_processes auto;
error_log /var/log/nginx/error.log info;
events {
    worker_connections  1024;
}
stream {
    upstream backend {
        server 127.0.0.1:12345  max_fails=3 fail_timeout=30s;
    }
    server {
        listen 12345;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }
}

检查nginx.conf语法是否有错误

代码语言:javascript
复制
nginx -t

启动nginx

代码语言:javascript
复制
nginx

验证nginx TCP代理功能是否OK

代码语言:javascript
复制
netstat -anp | grep 12345
tail -f /var/log/nginx/error.log

SecureCRT直接连接nginx TCP代理服务器192.168.31.10的TCP 12345端口,最终转发到192.168.31.1的TCP 22端口上,从/var/log/nginx/error.log中可以看到 TCP代理OK

5、修改nginx.conf并实现UDP代理

修改上一步中的nginx.conf,修改并增加UDP代理的部分配置

代码语言:javascript
复制
worker_processes auto;
error_log /var/log/nginx/error.log info;
events {
    worker_connections  1024;
}
stream {
    upstream tcp_backend {
        server 192.168.31.1:22  max_fails=5 fail_timeout=30s;
    }
    server {
        listen 12345;
        proxy_connect_timeout 10s;
        proxy_timeout 30s;
        proxy_pass tcp_backend;
    }
    upstream udp_backend {
        server 192.168.31.51:514;
    }
    server {
        listen 1514 udp;
        proxy_pass udp_backend;
    }
}

修改后nginx -s reload重载nginx服务

在一台测试Linux服务器上配置rsyslog 测试Linux服务器的Syslog日志转发到nginx UDP代理服务器192.168.31.10的UDP 1514端口,最终转发到192.168.31.51的UDP 514端口上(用kiwi syslog搭建的一台Windows Syslog日志接收服务器)

代码语言:javascript
复制
echo "*.* @192.168.31.10:1514" >> /etc/rsyslog.conf
systemctl restart rsyslog.service
service sshd restart

触发日志,可以看到udp代理转发OK

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WalkingCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下面介绍如何编译安装nginx,并实现tcp/udp代理
  • 1、编译环境准备
  • 2、下载nginx源码包并进行编译安装
  • 3、创建nginx执行程序软链并创建nginx用户与nginx日志目录
  • 4、修改nginx实现TCP代理的配置文件
  • 5、修改nginx.conf并实现UDP代理
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档