• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

使用Nginx代理实现数据库端口转发,外网连接内网端口【显哥出品,必为精品】

技术栈 lixian 4年前 (2020-09-27) 22846次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、前言

因公司需求,生产环境需要加一台数据库,并且需要外网连接数据库,但公司云服务器弹性公网IP实在太少,只有内网IP,需采用nginx代理端口转发连接内网服务器的数据库

二、服务器环境

1.数据库连接Navicat
2.Nginx代理服务器:外网47.10.8.100,内网192.168.1.131 (centos 7)
3.数据库服务器:内网192.168.1.126 (centos 6)

三、架构图

使用Nginx代理实现数据库端口转发,外网连接内网端口【显哥出品,必为精品】

四、部署Nginx代理服务器(192.168.1.131服务器上)

1.安装Nginx服务(生产环境有Nginx服务直接跳过本步骤)

直接yum安装或者本地localinstall安装都可以,这个无所谓,生产环境建议指定nginx版本rpm安装或者编译安装
注意:编译安装需要编译stream模块,即编译安装时带 –with-stream –with-stream_ssl_module 参数;

#本地安装nginx服务
[root@test ~]# yum localinstall nginx-1.16.1-1.el7.ngx.x86_64.rpm

2.编写Nginx配置文件

注意:stream模块需要在http层外面,和http同一级

[root@test ~]# vim /etc/nginx/nginx.conf
events {
  ......
}

stream {
    server {
        listen 3309;
        proxy_connect_timeout 1s;
        proxy_timeout 300s;
        proxy_pass 192.168.1.126:3306;
 }
}

http {
  ......
}

3.重启Nginx配置文件

注意:在生产环境建议使用reload平滑重启nginx配置文件,不要直接用restart,这样有可能会导致业务中断几秒,它俩之间的区别可以自己去百度(其实就是一个生效配置文件,一个重启nginx服务kill进程然后启动进程)

[root@test ~]# nginx -s reload

五、部署数据库(192.168.1.126服务器上)

安装MySQL数据库方法很多,我这里直接采用简单的yum安装,生产环境建议编译安装MySQL

#安装数据库
[root@mysql ~]# yum install -y mysql-server mysql mysql-devel

#启动数据库
[root@mysql ~]# service mysqld start

#开机自启
[root@mysql ~]# chkconfig  mysqld on

#检查是否启动成功
[root@mysql ~]# chkconfig --list  | grep mysqld

#设置数据库密码(生产环境密码要复杂点,别像我一样123456)
[root@mysql ~]# /usr/bin/mysqladmin -uroot password '123456'

#连接数据库
[root@mysql ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

六、Navicat连接数据库

注意:这里Navicat主机名或IP地址填写你的Nginx代理服务器外网的IP
使用Nginx代理实现数据库端口转发,外网连接内网端口【显哥出品,必为精品】


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:使用Nginx代理实现数据库端口转发,外网连接内网端口【显哥出品,必为精品】
喜欢 (0)

您必须 登录 才能发表评论!