首页 > 系统相关 >Nginx之数据流代理stream模块简介和使用

Nginx之数据流代理stream模块简介和使用

时间:2023-04-16 17:55:37浏览次数:47  
标签:stream 端口 tcp Nginx proxy 模块 数据流 53

转自 http://t.csdn.cn/RV4Hi

一、stream模块简介

  stream模块一般用于TCP/UDP数据流的代理和负载均衡,通过stream模块我们可以代理转发tcp报文。ngx_stream_core_module模块从1.9.0版开始提供。默认情况下,此模块不是构建的,应该使用–with stream配置参数启用它,即我们需要使用./configure --with-stream的方式在编译的时候将stream模块添加进去。stream模块用法和http模块差不多,语法也基本相同。

二、使用场景说明

  stream主要有两个可用场景。一是实现流量的代理转发,这里所说的代理转发是只某些端口服务是有源IP地址限制的,例如mysql账户一般是限制了源地址为应用服务器,nginx可能同时是WEB应用服务器,开发人员需要验证一些数据库数据问题,但是账户源地址有限制,此时通过nginx进行数据流转发就可以实现开发终端到mysql的访问。二是实现流量的负载均衡,我们有多个tcp或者udp端口服务(比如DNS),通过stream模块我们可以实现数据流的负载均衡,支持负载均衡算法包括轮询、最小连接数、ip_hash等。

三、配置示例

0、stream块配置

stream块配置与http块并列,在nginx.conf中配置,可以用include方式将我们配置实例单独配置,方便管理。

stream {
    log_format proxy '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
    access_log /var/log/nginx/tcp-access.log proxy ;
    open_log_file_cache off;
    include /etc/nginx/conf.d/*.stream;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1、tcp端口数据流代理

#cat tcp_3306.stream

############################################################################
### 这是一个tcp 3306端口代理的配置示例
############################################################################
server {
    listen 3306; #需要监听的端口
    proxy_connect_timeout 5s;
    proxy_timeout 30s;
    proxy_pass 192.168.10.151:3306; #需要代理的端口
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2、负载均衡配置

#cat load_udp_53.stream

############################################################################
### 这是一个udp 53端口负载均衡的配置示例
############################################################################
upstream mydns {
    hash $remote_addr consistent; #配置ip_hash方式,默认轮询
    server 192.168.10.10:53; #这里配置成要访问的地址和端口
    server 192.168.10.20:53;
    server 192.168.10.30:53; 
}
server {
    listen 53 udp reuseport; #需要监听的端口,因为udp非可靠传输协议,使用reuseport保证请求分配到统一会话中
    proxy_connect_timeout 5s;
    proxy_timeout 20s;
    proxy_pass mydns;
}
 

 

 

 

 

标签:stream,端口,tcp,Nginx,proxy,模块,数据流,53
From: https://www.cnblogs.com/AllenWongFly/p/17323696.html

相关文章

  • Stream流的思想和获取stream流
       stream流打印单列集合://单列集合获取ArrayList<String>list=newArrayList<>();Collections.addAll(list,"a","a","a");//stream流Stream<String>stream=list.stream();//用终结方法打印所有数据stream.forEach(newConsumer<St......
  • nginx中的proxy_pass配置
    Nginx是最常用的反向代理工具之一,一个指令proxy_pass搞定反向代理,对于接口代理、负载均衡很是实用,但proxy_pass指令后面的参数很有讲究,通常一个/都可能引发一个血案。通常nginx配置proxy_pass指令时,如果proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的......
  • nginx自定义负载均衡及根据cpu运行自定义负载均衡
    转载请注明出处:1.nginx如何自定义负载均衡在Nginx中,可以通过配置文件自定义负载均衡策略。具体步骤如下:首先,在Nginx配置文件中定义一个upstream模块,并设置负载均衡策略和后端服务器列表,例如:upstreammyapp{serverbackend1.example.comweight=3;server......
  • Nginx常用配置
    前言Nginx是一款高性能的Web服务器和反向代理服务器,广泛应用于互联网领域。在使用Nginx时,我们需要对其进行配置,以满足不同的需求和场景。本篇博客将介绍Nginx的常用配置。静态文件服务静态文件服务是Nginx最基本的功能之一,它可以通过配置实现对静态资源的访问。例如:server{......
  • 基于 RocketMQ Connect 构建数据流转处理平台
    作者:周波,阿里云智能高级开发工程师,ApacheRocketMQCommitter01从问题中来的RocketMQ Connect在电商系统、金融系统及物流系统,我们经常可以看到RocketMQ的身影。原因不难理解,随着数字化转型范围的扩大及进程的加快,业务系统的数据也在每日暴增,此时为了保证系统的稳定运行,就需......
  • 基于 RocketMQ Connect 构建数据流转处理平台
    作者:周波,阿里云智能高级开发工程师,ApacheRocketMQCommitter01从问题中来的RocketMQ Connect在电商系统、金融系统及物流系统,我们经常可以看到RocketMQ的身影。原因不难理解,随着数字化转型范围的扩大及进程的加快,业务系统的数据也在每日暴增,此时为了保证系统的稳定运行,就......
  • Java Stream API 操作完全攻略:让你的代码更加出色 (四)
    前言  JavaStream是一种强大的数据处理工具,可以帮助开发人员快速高效地处理和转换数据流。使用Stream操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。本文将为您介绍JavaStream操作的所有方面,包括range、range、iterate、generate等操作,让你的代码行......
  • 通过nginx proxy manager解决https站点访问http接口资源报错问题
    浏览器控制台报MixedContent:Thepageat'<URL>'wasloadedoverHTTPS,butrequestedaninsecureXMLHttpRequestendpoint'<URL>'.Thisrequesthasbeenblocked;thecontentmustbeservedoverHTTPS.这说明你的网站部署上服务器已经启用了ssl证书默认......
  • 如何设置nginx的文件上传大小限制
    编辑nginx配置文件1、打开Nginx配置文件,通常为/etc/nginx/nginx.conf。2、在http块中添加以下代码:http{...client_max_body_size50M;...}重启nginx服务systemctlrestartnginx......
  • curl 命令访问双向认证的Nginx
    curl命令访问双向认证的Nginx#这里一定要使用证书相对路径或绝对路径,不能写成--certclient.crt....这种形式curl-k--cert./client.crt--key./client.keyhttps://10.10.10.11 ......