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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: CentOS7下使用nginx实现TCP和UDP代理

640.jpg

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

640.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

640.png

640.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

640.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

640.png


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


cd /usr/local/nginx/conf
mv nginx.conf nginx.conf_bak
vi nginx.conf

640.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

640.png


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


640.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;
    }
}


640.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

640.png

640.png

640.png


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
2月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
4月前
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
385 2
|
10月前
|
网络协议 应用服务中间件 网络安全
Nginx,正向代理
本文介绍了Nginx作为HTTPS正向代理的两种方案:HTTP CONNECT隧道(7层)和NGINX stream(4层)。HTTP CONNECT隧道需要客户端手动配置代理,通过CONNECT请求建立隧道;而NGINX stream则更适合透明代理,利用SNI字段实现流量转发。文章详细讲解了两者的原理、环境搭建、使用场景及常见问题,并提供了配置示例和最佳实践建议。内容转载自阿里云开发者社区@怀知的文章,推荐读者参阅原文获取更多信息。感谢您的阅读!
1351 80
Nginx,正向代理
|
7月前
|
网络协议 Java 开发工具
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
404 1
|
9月前
|
网络协议 前端开发 应用服务中间件
nginxconf.sh 自动生成 nginx tcp 转发配置文件 conf
该脚本由 eisc.cn 开发,用于自动生成 Nginx 代理配置。它根据预设的域名、IP 和端口信息,为多个项目(如 www、work、sou 等)创建对应的 Nginx 配置文件,设置前端转发、端口对端口及后端转发规则,并生成日志和 301 跳转配置。支持自动创建 CGI 解析目录,确保各项目能够正确访问。运行时需具备 root 权限或使用 sudo。
290 9
|
11月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
423 11
|
11月前
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
11月前
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
697 2
|
12月前
|
网络协议 网络性能优化 数据处理
深入解析:TCP与UDP的核心技术差异
在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)是两种核心的传输层协议,它们在确保数据传输的可靠性、效率和实时性方面扮演着不同的角色。本文将深入探讨这两种协议的技术差异,并探讨它们在不同应用场景下的适用性。
397 4
|
12月前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
337 3