使用Nginx代理MySQL连接并限制可访问IP配置

 更新时间:2023年08月29日 09:42:53   作者:fkjavaer  
这篇文章主要为大家介绍了如何使用Nginx代理MySQL连接并限制可访问IP配置示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1.前言

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

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

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

推荐一个开源免费的 Spring Boot 实战项目:

https://github.com/javastacks/spring-boot-best-practice

2.Nginx代理连接

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

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

添加过程可以参照【Nginx基本命令&不停机版本升级】一文进行,我们这里不再赘述。

既然要用到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;
     }
 }

以上就是使用Nginx代理MySQL连接并限制可访问IP的详细内容,更多关于Nginx代理MySQL连接的资料请关注脚本之家其它相关文章!

相关文章

  • 详细nginx多域名配置的方法

    详细nginx多域名配置的方法

    Nginx绑定多个域名,可通过把多个域名规则写一个配置文件里实现,也可通过分别建立多个域名配置文件实现,为了管理方便,建议每个域名建一个文件,有些同类域名则可写在一个总的配置文件里。下面这篇文章就来详细看看nginx多域名配置的方法,有需要的朋友们可以参考。
    2016-12-12
  • nginx完全卸载的方法步骤

    nginx完全卸载的方法步骤

    由于现在nginx有版本漏洞,所以很多安装过nginx的需要卸载重新安装,本文主要介绍了nginx完全卸载的方法步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • 基于Nginx+lua实现简单的XSS攻击拦截

    基于Nginx+lua实现简单的XSS攻击拦截

    WAF即web应用防火墙,Nginx是一个主流的代理服务,除了本身的Nginx日志,作为用户肯定也支持对请求信息进行操作, 很多都是通过在代理服务器上挂载规则特征,实现软件层面的软WAF进行WEB防护,本文主要给大家介绍了Nginx+Lua实现一个简单的XSS攻击拦截,需要的朋友可以参考下
    2024-01-01
  • nginx lua集成kafka的实现方法

    nginx lua集成kafka的实现方法

    这篇文章主要介绍了nginx lua集成kafka的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Nginx服务器中414错误和504错误的配置解决方法

    Nginx服务器中414错误和504错误的配置解决方法

    这篇文章主要介绍了Nginx服务器中414错误和504错误的配置解决方法,分别对应Request-URI Too Large和Gateway Time-out这样的错误提示,需要的朋友可以参考下
    2015-12-12
  • Nginx配置WebSocket代理的示例代码

    Nginx配置WebSocket代理的示例代码

    本文提供了关于Nginx的配置和日志记录的详细指南,介绍了如何使用whereis命令查找Nginx路径,并通过man命令查看手册,同时,详解了解Nginx访问日志的配置方法及参数含义,并分享了Nginx代理WebSocket的配置示例,感兴趣的可以了解一下
    2024-10-10
  • 启动Nginx.exe出现闪退问题的解决方案

    启动Nginx.exe出现闪退问题的解决方案

    在做项目时,使用老师给的代码,点击Nginx.exe出现闪退的情况,出现这个问题可能出现的情况,端口号被占用或者logs下文件路径有问题,所以本文小编给大家介绍了启动Nginx.exe出现闪退问题的解决方案,需要的朋友可以参考下
    2024-03-03
  • 利用Nginx实现一个IP部署多个网站

    利用Nginx实现一个IP部署多个网站

    文章主要介绍了如何在一个服务器/一个IP地址上部署多个网站虚拟主机的方法,主要包括基于域名、端口和IP地址的区分方式,并详细描述了Nginx的虚拟主机配置结构和匹配优先,此外,文章还提供了完整的多站点部署示例、限制方案以及管理命令速查,需要的朋友可以参考下
    2026-05-05
  • nginx的FastDFS分布式存储模块测试方法

    nginx的FastDFS分布式存储模块测试方法

    很长时间没有关注FastDFS了,第一次使用FastDFS 是在 08年的时候11月的时候,那个时候是为了解决公司的数据存储~那时候可能是对Fastdfs了解不深,功能还不算太健全,最后选择了lustre。
    2010-12-12
  • Nginx中的最大连接数与连接池用法解读

    Nginx中的最大连接数与连接池用法解读

    Nginx的连接数和连接池配置对于提升服务器性能和稳定性至关重要,通过配置这些参数,可以优化Nginx处理并发请求的能力,减少资源的浪费,并提高响应速度
    2025-12-12

最新评论