首页 > 系统相关 >nginx通过四层代理实现端口转发

nginx通过四层代理实现端口转发

时间:2023-04-23 19:12:36浏览次数:47  
标签:10.5 四层 -- 端口 192.168 nginx proxy root

nginx通过四层代理实现端口转发

公司原有的测试数据库在主机192.168.10.5上边,现在数据库转移到了192.168.10.4上,为了不让各个地方都需要更改地址,现在需要一个四层代理工具,将原来请求到192.168.10.53306端口转发到192.168.10.43306端口。

这个工具,用到了 nginx 的四层代理。

官方文档:http://nginx.org/en/docs/stream/ngx_stream_core_module.html

四层代理依赖模块ngx_stream_core_module,该模块自 1.9.0 版开始可用。默认情况下,此模块不构建,应使用配置参数启用 --with-stream

安装过程简示:

[root@linux-node1 src]# tar xf nginx-1.10.3.tar.gz
[root@linux-node1 src]# cd nginx-1.10.3
[root@linux-node1 nginx-1.10.3]# useradd -s /sbin/nologin -M www
[root@linux-node1 nginx-1.10.3]# yum install gcc gcc-c++ zlib-devel pcre-devel openssl openssl-devel -y
[root@linux-node1 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx-1.10.3 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-stream
[root@linux-node1 nginx-1.10.3]# make && make install

可以通过nginx -V查看一下是否将上述模块编译进来,如果没有,可以重新编译一下。

来到主配置:

worker_processes  1;
events {
    worker_connections  1024;
}
stream {
        upstream tcp_proxy {
        hash $remote_addr consistent;  #远程地址做个hash
        server 192.168.10.4:22;
   }
      server {
        listen 2222;
        proxy_connect_timeout 1s;
        proxy_timeout 10s;  #后端连接超时时间
        proxy_pass tcp_proxy;
     }
  }

此配置是将本机的 2222 端口转发到 192.168.10.4 的 22 端口,配置之后,试验一下:

[root@7-3 nginx]$ssh -p 2222 [email protected]
The authenticity of host '[192.168.10.5]:2222 ([192.168.10.5]:2222)' can't be established.
ECDSA key fingerprint is 05:2f:63:e9:87:be:b4:44:d3:d7:77:a0:52:e0:4f:2f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.10.5]:2222' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last login: Wed Nov  7 15:24:33 2018 from 192.168.10.1
[root@7-2 ~]$hostname -I
192.168.10.4

刚刚设置了 10 的超时,如果需要的话,可以将之注释掉。

同理,配置数据库端口的转发也就非常简单了:

worker_processes  1;
events {
    worker_connections  1024;
}
stream {
        upstream tcp_proxy {
        hash $remote_addr consistent;  #远程地址做个hash
        server 192.168.10.4:3306;
   }
      server {
        listen 3306;
        proxy_connect_timeout 1s;
       # proxy_timeout 10s;  #后端连接超时时间
        proxy_pass tcp_proxy;
     }
  }

这样一来,用户连接192.168.10.5:3306的时候,就会被转发到192.168.10.4:3306了。

标签:10.5,四层,--,端口,192.168,nginx,proxy,root
From: https://www.cnblogs.com/cn-leoblog/p/17347457.html

相关文章

  • Nginx 反向代理
    Nginx配置反向代理一、前言反向代理作用隐藏服务器信息->保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网举例比如小编的码云个人博客地址为:http://zhengqingya.gitee.io/blog/,现在小编想通过自己的服务器地址http:/......
  • nginx学习笔记
    开始简介Nginx是一款高性能的开源Web服务器和反向代理服务器,它能够提供可扩展性、高可用性和高性能。优点更快单次请求更快,高峰期也更快高扩展性极具扩展性,它由多个不同功能、不同层次、不同类型且耦合度极高的模块组成,这种低耦合的设计,造就了它庞大的第三方模块高可......
  • 使用nmap扫描端口
    importnmapscanner=nmap.PortScanner()target='192.168.8.121'scanner.scan(target,arguments='-p-')forhostinscanner.all_hosts():print(host)ifscanner[host].state()=='up':print('Host:%s(......
  • iptable添加对指定IP放行指定端口策略规则
    添加到最后iptables-AINPUT-s192.168.3.19-ptcp--dport9235-jACCEPTiptables-AOUTPUT-d192.168.3.19-ptcp--sport9235-jACCEPT添加到指定行iptables-IINPUT10-s192.168.3.19-ptcp--dport9235-jACCEPTiptables-IOUTPUT10-d192.168.3.19......
  • Nginx配置跨域,覆盖后端服务跨域配置
    本篇文章主要介绍了,如何通过Nginx配置跨域,并覆盖后端服务跨域配置。先看下后端代码跨域配置:主要的目标是:不修改后端跨域配置代码,来实现Nginx跨域指定域名。@BeanpublicCorsFiltercorsFilter(){finalUrlBasedCorsConfigurationSourceurlBasedCorsCon......
  • nginx 转发
    server{listen80;#listen443ssl;server_name*.*.com;#rewrite^(.*)$https://$host$1permanent;gzipon;gzip_staticon;#需要http_gzip_static_module模块gzip_min_length1k;gzip_comp_level4;gzip_proxiedany......
  • Nginx 入门实战(1)--简介及安装
    本文介绍的Nginx为开源版本Nginx,官网地址为:https://nginx.org/en/,如需了解商业版本,可访问商业官网:https://www.nginx-cn.net/;文中所使用到的软件版本:nginx1.22.1、pcre8.43、opnessl1.1.1s、CentOS 7.9.20091、简介nginx[enginex]是一款Http和反向代理服务器、邮件......
  • STM32F103的默认测试端口(JTAG\SW)用作普通IO口的配置
    STM32F103的默认测试端口(JTAG\SW)介绍STM32F103的PB3、PB4、PA13、PA14、PA15在默认上电状态并不是具有普通 IO 的功能的。而是用作SWJ-DP端口(用于JTAG调试)  这些引脚只有重定义功能后才能作为普通的IO口使用,所以我们需要对这些引脚进行配置的时候开启AFIO复用时钟。下......
  • 如何使用nginx代理网站链接
    代理单个地址代理单个地址,意思是通过nginx配置之后,nginx这边会配置出一个特定的地址,这个地址对应被代理的网站地址。比如,网站分享后的地址是:http://192.168.31.165:81/abc/通过nginx代理后,该地址可被代理为:http://192.168.31.4:8081/a1/配置如下:map$http_upgrade$co......
  • NGINX 备忘清单_开发速查表分享
    NGINX备忘清单Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。Nginx是一款轻量级的Web服务器/反向代......