centos查看自己udp端口_CentOS7下使用nginx实现TCP和UDP代理

5aac81256256143e25afc685dc4b8f2f.png

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

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

ef0da517cdfc0be7affb826daeaacdd0.png

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

1、编译环境准备

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

040943516a6b51c0a29dea4306f04ede.png
100c8b90e20d7b06e297958733b4d4c0.png

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

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

0aa0eae8238858d73029316c20a3b91a.png
0d60f41e80f10eee27ceaeacf04ab75c.png

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

#创建nginx执行程序软链

ln -snf /usr/local/nginx/sbin/nginx /usr/local/sbin

#创建nginx用户

useradd -s /sbin/nologin -M nginx

#创建nginx日志目录

mkdir /var/log/nginx

eac6eaa5721b85f39e0c9c16f67802b9.png

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

cd /usr/local/nginx/conf

mv nginx.conf nginx.conf_bak

vi nginx.conf

3d6625bc8e29d2d44fc6ea4f7f462bac.png

配置文件修改成如下内容

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语法是否有错误

nginx -t

启动nginx

nginx

验证nginx TCP代理功能是否OK

netstat -anp | grep 12345

tail -f /var/log/nginx/error.log

3d6625bc8e29d2d44fc6ea4f7f462bac.png

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

e7517acd0c982e7ed6a031b01cc236f9.png

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

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

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;

}

}

c08bde2d4f3c1773a0c9a440d92609a3.png

修改后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日志接收服务器)

echo "*.* @192.168.31.10:1514" >> /etc/rsyslog.conf

systemctl restart rsyslog.service

service sshd restart

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

e0cd2c4d0aa19716cadc3c223bd9c236.png
ae7efc3e8ce54d15a34405efe808eeac.png
cdc7f3258e874e4e0f4055858821a613.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值