nginx支持数据库等TCP端口的转发

  • 当前环境
  • 第一步:更新系统
  • 第二步:安装 nginx
  • 第三步:启动nginx
  • 第四步:设置开机自启 nginx
  • 第五步:查看信息
  • 查看nginx支持哪些模块
  • 查看nginx当前启动状态
  • 重要步骤六:安装stream模块,不然无法识别stream不能进行TCP协议转发
  • 可以使用两种方式安装,选择1或者2即可
  • 步骤7:修改配置文件
  • 步骤八:验证文件是否配置成功
  • 步骤九:刷新重新加载配置文件
  • 步骤十,验证是否成功转发TCP协议端口
  • 完结:做这个跳转的意义是什么?


当前环境

全新未安装任何东西的阿里云CentOS 7.9 64位系统

第一步:更新系统

sudo yum update -y

nginx tcp转发获取IP地址 nginx转发tcp协议_TCP

第二步:安装 nginx

疑似nginx1.9以上才支持TCP协议, EPEL 仓库的安装包大于1.9版本,所以使用默认版本即可

sudo yum install -y nginx

nginx tcp转发获取IP地址 nginx转发tcp协议_tcp/ip_02

第三步:启动nginx

sudo systemctl start nginx

nginx tcp转发获取IP地址 nginx转发tcp协议_nginx tcp转发获取IP地址_03

第四步:设置开机自启 nginx

sudo systemctl enable nginx

nginx tcp转发获取IP地址 nginx转发tcp协议_nginx tcp转发获取IP地址_04

第五步:查看信息

查看nginx支持哪些模块
nginx -V

nginx tcp转发获取IP地址 nginx转发tcp协议_nginx_05

查看nginx当前启动状态
sudo systemctl status nginx

nginx tcp转发获取IP地址 nginx转发tcp协议_nginx_06

重要步骤六:安装stream模块,不然无法识别stream不能进行TCP协议转发

可以使用两种方式安装,选择1或者2即可

1、单独安装stream模块,

sudo yum install nginx-mod-stream

2、安装所有模块

yum -y install nginx-all-modules.noarch

nginx tcp转发获取IP地址 nginx转发tcp协议_nginx_07

步骤7:修改配置文件

设置要转发的端口和地址

vi /etc/nginx/nginx.conf

以下是我的配置

# add by luyuxi 20240510 start 将TCP的3306端口转发到47.120.74.197:3306
stream {
    server {
        listen 3306;
        proxy_pass mysql_backend;
    }
    upstream mysql_backend {
        server 47.120.74.197:3306;
    }
}
# add by luyuxi 20240510 end

nginx tcp转发获取IP地址 nginx转发tcp协议_tcp/ip_08

步骤八:验证文件是否配置成功

nginx -t

nginx tcp转发获取IP地址 nginx转发tcp协议_tcp/ip_09

步骤九:刷新重新加载配置文件

sudo systemctl restart nginx

nginx tcp转发获取IP地址 nginx转发tcp协议_nginx tcp转发获取IP地址_10

步骤十,验证是否成功转发TCP协议端口

我此处直接使用本地的Navicat连接远程的3306端口,跳转链路为:

本地 -> 香港云 -> 跳转国内服务器

nginx tcp转发获取IP地址 nginx转发tcp协议_tcp/ip_11

完结:做这个跳转的意义是什么?

因为香港云服务器不需要备案,绑定域名后就可以通过域名访问无备案的网站,可以很多事情。

nginx tcp转发获取IP地址 nginx转发tcp协议_TCP_12


nginx tcp转发获取IP地址 nginx转发tcp协议_linux_13