龙空技术网

如何通过Nginx转发到Mysql服务器

自由探索者 1553

前言:

目前我们对“nginx2个端口映射”大致比较关怀,小伙伴们都想要了解一些“nginx2个端口映射”的相关文章。那么小编同时在网上收集了一些关于“nginx2个端口映射””的相关资讯,希望朋友们能喜欢,各位老铁们一起来了解一下吧!

前言

目前很多的企业将业务转移到云上,如果数据库服务器直接暴露在公网,存在被暴力破解攻击的风险,因为,云服务器上的mysql 3306端口基本不对外开放。但是安全的代价是维护起来比较麻烦,那有没有办法可以用的时候快速开放出来,用完再关掉呢。

方法有多种:

1、通过云控制台的安全组规则控制,用的时候开启,用完关闭;如下图,不过一般我们会建议大家将端口进行修改,避免直接将默认端口暴露在公网上。

安全组规则

2、通过Nginx转发,并在Linux服务器中通过防火墙控制nginx的端口,用完即时关闭。下面我们详细讲解如何实现。

一、Nginx的下载

可以到Nginx官网进行下载,

Linux下载方式

wget 

如已经有安装,可通过以下脚本检查是否有安装stream 模块

#  cd /usr/local/nginx/sbin/ #  ./nginx -V

如下图所示,configure arguments参数中如果包括 --with-stream=dynamic 参数,证明安装的版本包括stream模块,如果不包括需要按照后续步骤重新安装

查看nginx是否安装stream模块

二、Nginx编译、安装

执行如下命令进行参数设置和编译安装

 ./configure --prefix=/usr/local/nginx-1.26.1 --with-stream=dynamic --with-http_ssl_modulemake && make install

其中--prefix是指编译后的目录位置,--with-stream=dynamic是编译时要带有stream模块,同样--with-http_ssl_module也是编译时要具有SSL模块。

此时,在/usr/local/nginx-1.26.1路径下就已经有可运行的nginx程序了,查看modules下会有一个ngx_stream_module.so的文件,即本次讲解的主角stream模块。

查看nginx安装目录

三、如何用?

进入到conf目录,编辑index.conf文件,在第一行,加入如下配置

load_module /usr/local/nginx-1.26.1/modules/ngx_stream_module

在http代码块下方加入stream代码块,如用不到http可将该代码块删除。stream代码块如下所示:

stream{    log_format  main  [$time_local] '$remote_addr - '   '$status  '   '"$upstream_addr" ';    access_log  logs/stream_access.log  main;	        upstream MySQL{        server 192.168.0.120:3306;    }    server{        listen 3306;        proxy_pass MySQL;    }}

保存代码执行./nginx -t检查配置文件是否有错误,如果test seccess,即可执行./nginx 命令启动。

此时系统就能够nginx服务转发3306端口到内网中192.168.0.120:3306MySQL服务器了,安全起见,大家尽量将lisen 3306中的3306端口修改为其它端口。

通过以下命令,可查看刚才配置的nginx服务是否有启动

netstat -anop | grep nginx
四、配置防火墙

通过以下命令添加防火墙入站规则,并刷新防火墙

firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reload
五、安全组策略中开启端口映射

安全组策略

此时通过你的云服务的外网IP或域名就可以访问到内网的MySQL的服务了,记得用完即时关闭nginx和端口映射。

扩展阅读

1、./configure 配置,是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。configure 脚本负责在使用的系统上准备好软件的构建环境。确保接下来的构建和安装过程所需要的依赖准备好,并且搞清楚使用这些依赖需要的东西。

2、make 构建,用来编译,它从Makefile中读取指令,然后编译。下载的源码包一般没有一个最终的 Makefile 文件,一般是一个模版文件 文件,然后 configure 根据系统的参数生成一个定制化的 Makefile 文件。这个过程会执行在 Makefile 文件中定义的一系列任务将软件源代码编译成可执行文件。

3、make install安装,它也从Makefile中读取指令,安装到指定的位置。make install 命令就是将可执行文件、第三方依赖包和文档复制到正确的路径。

标签: #nginx2个端口映射