当前位置:首页 > 技术文章 > 正文内容

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

arlanguage4个月前 (01-14)技术文章34

前言

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

方法有多种:

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



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

一、Nginx的下载

可以到Nginx官网进行下载,https://nginx.org/en/download.html

Linux下载方式

wget https://nginx.org/download/nginx-1.26.1.tar.gz

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

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

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

二、Nginx编译、安装

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

 ./configure --prefix=/usr/local/nginx-1.26.1 --with-stream=dynamic --with-http_ssl_module
make && 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模块。

三、如何用?

进入到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 --permanent
firewall-cmd --reload

五、安全组策略中开启端口映射

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


扩展阅读

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

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

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

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

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/860.html

标签: nginx 替换
分享给朋友:

“如何通过Nginx转发到Mysql服务器” 的相关文章

隐藏Nginx服务的Banner 和 隐藏Nginx后端服务指定的header的状态

一、隐藏Nginx服务的Banner当Nginx服务器响应请求时,不隐藏它的版本信息和名称。这会暴露服务器的信息,使攻击者可以获取服务器软件版本和配置的信息,帮助攻击者发现潜在的漏洞或攻击路径。以下是一些潜在的危害:1. 暴露服务器信息:不隐藏 banner 可以让攻击者知道服务器正在使用 Ngin...

Nginx Lua编程基础

Lua是一门脚本动态语言,并不太适合做复杂业务逻辑的程序开发,但是,在高并发场景下,Nginx Lua编程是解决性能问题的利器。Nginx Lua编程主要的应用场景如下:API网关:实现数据校验前置、请求过滤、API请求聚合、AB测试、灰度发布、降级、监控等功能,著名的开源网关Kong就是基于Ngi...

nginx启动、重启、关闭

一、启动cd usr/local/nginx/sbin./nginx二、重启更改配置重启nginxkill -HUP 主进程号或进程号文件路径或者使用cd /usr/local/nginx/sbin./nginx -s reload 判断配置文件是否正确nginx -t -c /usr/local/...

网站加载慢?让你的网站腾飞起来,LiteSpeed部署

说起LiteSpeed 还得说起我的小站,<开心洋葱网>,虽然流量不大,但是访问是真的慢,无奈经费有限,那就只能在服务器加速上动起心思来。之前一直听说 QUIC 访问网站的速度会让你感觉飞起来,那就搞下吧。我们先来看下 QUIC 、LiteSpeed都是些做什么的?QUIC(Quick...

如何找出爬取网站的来源IP? 爬取网站源代码

1.背景最近网站数据库性能很不稳定,查询性能在某段时间很慢,服务器CPU也很高,平常时间很低,感觉被爬虫恶意搞了,因此我分析了一下最近的nginx访问日志2.方法找出访问量最大20个ip[root@100 nginx]# cat liuhaihua.access.log | awk -F "...

轻量级日志平台 Loki 2.3 发布:15 倍最近数据查询速度提升

一、前言Loki v2.3.0 中添加了出色的新功能,进行了 bug 修复。除此之外,性能也得到了提升。二、自定义保留规则Loki 中的保留对于集群来说一直是全局的,并推迟到底层对象存储。Loki 现在可以通过 Compactor 组件处理保留。 你可以配置每个租户和每个流的保留时间。 这些不同的保...