如何用 Nginx 代理 MySQL 连接,并限制可访问 IP?

文章图片1

现阶段,对于一个互联网公司来讲,其生产环境基本上都是在云服务器上,例如常用的一些应用服务器、数据库服务器等等。但是在我们部署引用的时候,如果直接将数据库的链接暴露在公网上很明显不现实,存在很大的安全隐患。而一般情况下,数据库服务端口是不对外开放的。但是在生产环境出现问题之后,我们又需要通过数据库来查看问题。这个问题,一般的解决方案是使用VPN技术,或者是使用跳板机技术。下面我们就来看看如何使用Nginx来实现一个跳板机。

Nginx代理原理

既然要实现代理的请求转发,必不可少的就是需要一个Nginx服务器,并且要保证其与MySQL所在的服务器在同一个内网环境中,也就是说通过内网环境可以相互访问。

其次,需要我们去安装 ngx_stream_core_module模块 这个模块并不是默认构建的,而是需要我们在安装Nginx的时候通过 -with-stream 配置来进行构建。

Nginx的Stream模块主要是用来做四层的负载均衡,流量转发。它支持TCP和UDP流量的转发。相对于HTTP流量,TCP/UDP流量的负载均衡和处理更接近底层。 使用Nginx流代理可以极大的方便解决一些TCP/UDP流量管理的问题。

在这个模块安装好之后,有如下几个配置需要我们注意

stream

这个配置模块主要用来指定stream服务器的相关配置,是与HTTP模块平级的块。其定义在main模块中

stream {		server{    ……    }}

server

指定一个虚拟机,与http模块中的server功能类似,我们可以在stream中定义多个server如下所示。

stream {     server {         ......     }     server {         ......     } }

listen

这个指令定义了虚拟机server所监听的socket的地址端口。

listen 127.0.0.1:3306; listen *:3306; # 效果与listen *:3306一样 listen 3306; listen localhost:3306;

配置MySQL链接

以MySQL为例来进行配置,如果是在单机环境下则是通过如下的配置实现。

stream  {     server {         listen 3306;         proxy_pass 192.168.110.101:3306;     } }

如果是在集群的环境下我们可以通过如下的方式来进行配置。这个配置有点类似于我们通过Nginx配置反向代理的负载均衡的方式。

stream  {     upstream mysql_socket {         server 192.168.110.101:3306;     }     server {             listen 3306;             proxy_pass mysql_socket;     } }

完成上述配置之后,我们就可以通过MySQL的客户端工具来连接服务了。

对于IP访问的限制

配置完成之后,接下就需要对IP进行访问限制。为了保证安全Stream模块中还提供了如下的两条指令

  • allow:允许访问的IP
  • deny:禁止访问的IP

其配置如下。

 # 允许192.168.110.1访问 allow 192.168.110.1;  # 允许192.168.110.1到192.168.255.254 allow 192.168.110.0/16;  # 允许192.168.110.1到192.168.110.254 allow 192.168.110.0/24;  # 允许所有的IP访问 allow all;

禁止访问的配置如下

# 禁止192.168.110.1访问 deny 192.168.110.1;  # 禁止192.168.110.1到192.168.255.254 deny 192.168.110.0/16;  # 禁止192.168.110.1到192.168.110.254 deny 192.168.110.0/24;  # 禁止所有的IP访问 deny all;

我们可以通过如下的设置来限制IP的访问。

allow 192.168.110.100;deny all;

这里需要注意这两个指令是相互配合使用,如果只设置其中的一个选项,则另一个配置选项就成了默认值。

总结

通过下面这个配置,我们就可以实现一个MySQL数据库连接配置设置,允许192.168.110.100访问并且只允许192.168.110.100访问。

stream  {     allow 192.168.110.100;     deny all;     server {         listen 3306;         proxy_pass 192.168.110.101:3306;     } }

一篇了解ERP与CRM、MRP、PLM、APS、MES、WMS、SRM的关系 !

ERP则是集成管理软件,可以覆盖企业的多个业务流程和数据,包括财务、人力、研发、生产制造、供应链、采购、销售、服务、资产管理等多个模块。

微服务回归单体后,代码减少75%,性能提升1300%……

一、项目背景内容架构是 QQ 浏览器搜索的内容接入和计算层,主要负责腾讯域内的内容接入和处理,当前接入了多个合作方的上千类内容。正如前面《如何避

在做网站SEO优化中robots的编写方法

robots.txt是搜索引擎中的一个协议,当你的网站有一些内容不想给蜘蛛爬取,那可以利用robots.txt来告诉蜘蛛不要去爬取这些页面,不爬取这些页面当然就不收录了。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。

知识变现?,开启你的自由工作之路

管理大师德鲁克说过,下一个社会就是“知识社会”,我们正身处“…可以从如下几个方面进行:、出身;、学历;、证书;、标签;、著作;、能力;、人脉。除了包装以外,还得形成个人品牌输出。这里面又分为五个层面。、个人形象设计。、个人对外设计。、专业媒体品牌背书输出。、线下线上讲座或自媒体输出。、产品化输出。准备…的践行者,帮助你找到人生目标、制定可行计划、养成良好习惯、顺

墨子学院:外链没用吗,那是你不懂如何看出外链的价值!

所谓“内容为王,外链为皇”,尽管这样的时代早已过去,但是我们还是不能忽略外链在网站SEO优化中的地位。