nginx通过四层代理实现端口转发的示例代码

 更新时间:2025年07月13日 15:03:41   作者:遇见火星  
本文主要介绍了nginx通过四层代理实现端口转发,将原IP的3306端口请求转至新IP的3306端口,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧

公司原有的测试数据库在主机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 root@192.168.10.5
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.
root@192.168.10.5'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了。

到此这篇关于nginx通过四层代理实现端口转发的文章就介绍到这了,更多相关nginx 端口转发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx配置https的实现

    Nginx配置https的实现

    本文主要介绍了Nginx配置https的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • nginx部署前端vue项目完整详细指南

    nginx部署前端vue项目完整详细指南

    在使用Nginx部署前端Vue项目时,需要确保项目的生产环境版本已经打包,并且Nginx已经安装并配置在服务器上,下面我们来看看具体步骤吧
    2025-09-09
  • Nginx配置文件提权的实战指南

    Nginx配置文件提权的实战指南

    在现代 Linux 系统中,nginx 通常作为 Web 服务的核心组件运行,其支持的模块化配置、灵活的路径设置以及多样的文件解析能力,本文结合一次真实场景,给大家介绍如何通过配置文件完成提权操作进行深入剖析,需要的朋友可以参考下
    2025-09-09
  • 高并发nginx服务器的linux内核优化配置讲解

    高并发nginx服务器的linux内核优化配置讲解

    今天小编就为大家分享一篇关于高并发nginx服务器的linux内核优化配置讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 如何修改Nginx版本名称伪装任意web server

    如何修改Nginx版本名称伪装任意web server

    这篇文章主要介绍了修改Nginx版本名称伪装任意web server的方法,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-08-08
  • Nginx反向代理基本设置的21个指令详解

    Nginx反向代理基本设置的21个指令详解

    这篇文章主要介绍了Nginx反向代理基本设置的21个指令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • NGINX详细下载安装及使用入门教程

    NGINX详细下载安装及使用入门教程

    Nginx是一种高性能的Web服务器软件,它可以处理大量的并发连接,并且可以缓存HTTP请求以提高性能,本文给大家介绍NGINX详细下载安装及使用入门教程,感兴趣的朋友跟随小编一起看看吧
    2024-10-10
  • Nginx Proxy Manager配置Web WAF应用防火墙

    Nginx Proxy Manager配置Web WAF应用防火墙

    Nginx Proxy Manager是一款功能强大的开源软件,配置Web应用防火墙,可以防止常见的web攻击,本文就来介绍一下Nginx Proxy Manager配置Web WAF应用防火墙,感兴趣的可以了解一下
    2025-02-02
  • 教你快速构建一个基于nginx的web集群项目

    教你快速构建一个基于nginx的web集群项目

    本文教你快速构建一个基于nginx的4/7层负载均衡的web集群项目,项目步骤本文给大家介绍介绍,对nginx web集群项目感兴趣的朋友一起看看吧
    2021-11-11
  • 使Nginx服务器支持.htaccess的方法

    使Nginx服务器支持.htaccess的方法

    这篇文章主要介绍了使Nginx服务器支持.htaccess的方法,.htaccess配置文件设置是Apache上的好东西,现在我们让Nginx服务器也能使用它,需要的朋友可以参考下
    2015-07-07

最新评论