【nginx】nginx四层转发,访问内网mysql数据库
前言
目前很多的企业将业务转移到云上,如果数据库服务器直接暴露在公网,存在被暴露的风险,云服务器上的mysql 3306端口基本不对外开放
我们如果想通过外网直接访问mysql
可以使用nginx端口转发来实现
步骤
一、未安装nginx的情况下(可参考:Linux系统nginx安装说明(在线/离线安装)_小慌慌的博客-CSDN博客)
1、首先安装nginx
./configure --prefix=/usr/local/nginx --with-stream && make && make install
这里必须要加上--with-stream ,四层转发主要是通过这个模块来实现的
2、这个配置要写在http外。nginx.conf配置如下:
#mysql
stream {
upstream mysql {
server 2.2.2.2:3306 weight=1 max_fails=3 fail_timeout=10s;
}
server {
listen 3307;
proxy_pass mysql;
proxy_timeout=600s;
proxy_connect_timeout=30s;
}
}
http {
...
)
3、重启nginx
4、检查3307端口是否已经起来
5、连接mysql
mysql -uroot -p123456 -h1.1.1.1.1 -P3307
内网mysql服务器要先授权2.2.2.2的内网ip地址
1.1.1.1是nginx的外网ip
二、已经有安装过nginx,并在使用想要再添加stream模块
方案A:共用nginx
1、先使用nginx -V 查看之前的编译参数
2、用之前的编译参数加上--with-stream
./configure --prefix=/... --with-stream
3、然后执行 make
这里千万不要执行make install
到这里,我们先备份之前的nginx启动文件
cp /application/nginx/sbin/nginx(bak)
然后拷贝编译目录下的cp ./objs/nginx /application/nginx/sbin/nginx
这样就添加上了,然后使用nginx -V查看
方案B:不同路径再安装一个nginx
1、需要注意编译的时候要带新nginx的安装路径,如:原来装/usr/local/nginx。现在再装一个:/home/nginx
2、编译./configure --prefix=/home/nginx --with-stream && make && make install
3、如果安装完没报错,在/home/nginx目录下没有生成sbin目录,那么找到/home/nginx/objs/nginx这个就是可执行文件
4、最后,附上小编常用的命令
- 创建软连接:ln -s /usr/local/nginx/objs/nginx /usr/bin/nginx
- 启动:/usr/local/nginx/objs/nginx -c /usr/local/nginx/conf/nginx.conf
- 测试: /usr/local/nginx/objs/nginx -t
- 重启:/usr/local/nginx/objs/nginx -s reload
相关文章
- MySQL Binlog Digger 4.28 【mysql日志分析工具】
- VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧
- MySQL使用初步—mysql数据库的基本命令
- JDBC连接MySQL数据库小例子
- 在 Linux 中修改 MySQL 或 MariaDB 的 Root 密码
- 《深入实践Spring Boot》一第2章 在Spring Boot中使用数据库2.1 使用MySQL
- MySql 数据库导入"Unknown command 'n'."错误解决办法
- MySQL mysqldump备份数据库及恢复数据库(mysql命令)
- Windows系统云服务器安装、配置 MySQL 数据库
- 【MySQL】如何向mysql数据库插入当前时间
- Mysql批量删除数据库
- 【Selenium项目实战】项目环境搭建:安装JDK、mysql、Tomcat、jpress和测试系统
- .NET/Mysql-petatoco连接mysql数据库
- 转 MySQL数据库基础
- [mysql]MySQL数据库如何导出
- python操作mysql数据库系列-操作MySql数据库(五)
- idea 社区版连接mysql数据库教程,Cannot connect to “MySQL-5.1.43“. CLIENT_PLUGIN_AUTH is required
- MySQL和Mongodb的区别与应用场景对比
- PostgreSQL通过mysql_fdw访问MySQL数据库
- (1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构、SQL查询流程)
- mysql数据库全文多库多表查找,查询所有数据库中包含指定字符的数据
- 【MySql 】is not allowed to connect to this MySql server 无法访问远程MySQL数据库
- Mysql 中的三种创建用户的方式