当前位置:首页 > CN2资讯 > 正文内容

Nginx代理MySQL

1天前CN2资讯

1.前言

我们的生产环境基本上都部署在云服务器上,例如应用服务器、MySQL服务器等。如果MySQL服务器直接暴露在公网,就会存在很大的风险,为了保证数据安全,MySQL服务器的端口是不对外开放的。

好巧不巧,线上业务遇到bug了,开发的小伙伴需要远程连接MySQL来查看数据,那应该怎么办呢?

我们可以通过Nginx代理(“跳板机”)来进行连接。

2.Nginx代理连接

要实现对连接的代理转发,我们需要一台服务器并安装Nginx,且与MySQL服务器处于一个内网之中,内网之间可以访问。

其次,我们需要用到ngx_stream_core_module模块,该模块不是默认构建的,我们需要在configure时添加--with-stream来进行构建。

既然要用到ngx_stream_core_module模块,先看看其提供的指令,我们才知道怎么来进行配置。

1)stream

该指令定义了stream服务器。与http块平级,定义在main块中。

  • 作用域:main
  • 语法:stream {...}

示例:

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

2)server

该指令定义一个虚拟主机,与http块中的server类似。我们可以在stream块中定义多个server块。

  • 作用域:stream
  • 语法:server {...}
stream { server { ...... } server { ...... } }

3)listen

该指令定义虚拟主机server要监听的socket的地址和端口。

  • 作用域:server
  • 语法:listen address:port;

示例:

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

4)配置示例

MySQL服务器,端口3306(单机环境)

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

MySQL服务器,端口3306(集群环境)

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

此时,我们就可以通过例如Navicat等客户端进行连接。

3.限制访问IP

实现了对连接的代理,所有人都可以通过访问Nginx来连接MySQL服务器,解决了外网无法连接的问题。

为了更进一步的缩小访问范围,保证数据安全,我们可以限制只有公司网络的IP地址可以通过Nginx进行连接。

Nginx提供了ngx_stream_access_module模块,其指令非常简单,仅包含allow和deny指令。

1)allow

该指令设置指定的IP允许访问。可以和deny指令配合使用

  • 作用域:stream, server
  • 语法:allow address | CIDR | unix: | all;

示例:

# 允许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;

2)deny

该指令设置指定的IP禁止访问。可以和allow指令配合使用。

  • 作用域:stream, server
  • 语法:deny address | CIDR | unix: | 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;

3)配置示例

禁止所有的IP访问,192.168.110.100除外。

allow 192.168.110.100; deny all;

Tips:如果指定了allow,需要配合deny使用,否则就是允许所有的IP地址访问。

4.综合案例

只允许192.168.110.100通过Nginx连接MySQL服务器。

stream { allow 192.168.110.100; deny all; server { listen 3306; proxy_pass 192.168.110.101:3306; } }
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32148.html

    分享给朋友:

    “Nginx代理MySQL” 的相关文章

    Cloudflare 菲律宾节点:提升网络体验与速度的解决方案

    在当今数字化时代,每一个在线体验都至关重要。CloudFlare的出现,正是为了满足这一迫切的需求。作为全球知名的CDN(内容分发网络)服务提供商,CloudFlare不仅致力于加速网站的加载速度,也为用户提供安全防护服务。借助全球分布的节点,CloudFlare能够将用户请求快速而安全地送达目的地...

    获取国外动态IP服务的指南与优势

    在当今互联网的世界中,动态IP(Dynamic IP)逐渐成为了一个重要的概念。它指的是由互联网服务提供商(ISP)动态分配的、可变的IP地址。与固定不变的静态IP相比,每次连接互联网时,动态IP都可能发生变化。这种灵活性不仅高效利用了IP资源,还在多个领域产生了实际应用的优势。 动态IP的特点非常...

    2023年美国服务器市场分析与未来展望

    在美国,服务器市场一直以来都具有举足轻重的地位。到了2023年,这个市场依旧保持着强劲的增长势头。根据IDC的分析报告,2023年第一季度,美国的服务器市场规模达到了2212亿美元,相比去年增长了2%。这不仅显示了市场的健康发展,也奠定了美国在全球服务器市场的领导地位,全球市场份额约为30%。 随着...

    AS4837线路概述与技术特点解析,适合预算有限用户的高速网络选择

    AS4837线路的概述 当我开始了解AS4837线路时,就会发现它不仅仅是一个技术名词,更是中国联通的一部分。AS4837,简称为China169,是中国联通的骨干网线路,诞生于20世纪90年代。这条线路架起了中国大陆与全球之间的桥梁,特别是连接了香港、美国、日本和韩国等重要地区。对于那些追求高速互...

    Linode测速:优化云服务器性能与用户体验的全面指南

    Linode概述 Linode是一家以云计算服务而闻名的公司,提供虚拟私人服务器(VPS)以及一系列相关的云服务。对于那些追求灵活、高性能解决方案的用户,Linode无疑是一种不错的选择。你只需在Linode官网注册账户,便可以获得100美元的赠送额度,轻松体验其各项服务。这种简单快捷的注册过程让许...

    如何有效进行Payoneer绑定PayPal的详细步骤指南

    在目前的数字支付环境中,Payoneer和PayPal是两个广受欢迎的支付平台。首先,Payoneer(派安盈)是一个全球化的支付解决方案,专为跨境电商卖家、独立站卖家及B2B外贸商家设计。它支持多种货币的收付款服务,覆盖190个国家,包含了70种币种。这意味着无论在哪个地方进行交易,Payonee...