mysql服务nginx和firewalld代理实现

news2024/9/23 3:30:47

文章目录

  • 环境准备
  • nginx代理mysql服务
  • linux防火墙实现mysql流量转发

工作中常常遇到只有某个特定服务器才能访问数据库的情况,这个时候为了解决团队同时访问数据库的问题可以采用nginx代理和linux防火墙流量转发的方式解决。实战测试如下:

环境准备

准备一台mysql服务器 和一台虚拟机用来作为访问mysql的代理机/流量转发机/跳板机,
服务器关系:
本地客户端主机------->代理(nginx)或防火墙转发服务器 -------->mysql服务器

nginx代理mysql服务

上传nginx 安装包到 跳板机服务器 并解压如下
在这里插入图片描述
进入nginx源码目录 进行编译 ,编译时一定要带上 stream 模块,该模块实现tcp 四层转发

./configure   --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_realip_module  --with-stream_realip_module

编译通过后 执行 make && make install 进行安装

安装完成到 安装目录 /usr/local/nginx 下 修改 config/nginx.conf 配置文件

[root@host10 nginx]# pwd
/usr/local/nginx
[root@host10 nginx]# ll
total 4
drwx------ 2 nobody root    6 May 26 05:37 client_body_temp
drwxr-xr-x 2 root   root 4096 May 26 06:19 conf
drwx------ 2 nobody root    6 May 26 05:37 fastcgi_temp
drwxr-xr-x 2 root   root   40 May 26 05:31 html
drwxr-xr-x 2 root   root   58 May 26 05:38 logs
drwx------ 2 nobody root    6 May 26 05:37 proxy_temp
drwxr-xr-x 2 root   root   36 May 26 06:06 sbin
drwx------ 2 nobody root    6 May 26 05:37 scgi_temp
drwx------ 2 nobody root    6 May 26 05:37 uwsgi_temp
[root@host10 nginx]# vi conf/nginx.conf

配置文件增加如下内容 注意 stream 配置 是和 http并列的配置 必须在http 外

在这里插入图片描述

stream {
    server {
        listen 10000;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass 10.XXX.XXX.XXX:10376;
    }
}

启动nginx 进行访问测试。

[root@host10 nginx]# sbin/nginx

mysql 连接工具中配置 mysql连接信息使用 跳板机上 nginx 的 ip 和端口 进行连接测试,连接正常

在这里插入图片描述

linux防火墙实现mysql流量转发

原理类似,我们需要在跳板机配置一条防火墙策略, 把8000端口的tcp流量 都转发到mysql服务器
我们这里使用 firewalld进行配置
首先确保 firewalld服务正常

[root@host10 zones]# systemctl status  firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-05-27 01:40:33 +08; 3min 34s ago
     Docs: man:firewalld(1)
 Main PID: 64933 (firewalld)
    Tasks: 2
   Memory: 21.9M
   CGroup: /system.slice/firewalld.service
           └─64933 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

May 27 01:40:33 host10 systemd[1]: Starting firewalld - dynamic firewall daemon...
May 27 01:40:33 host10 systemd[1]: Started firewalld - dynamic firewall daemon.
May 27 01:40:33 host10 firewalld[64933]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future rel...ing it now.
Hint: Some lines were ellipsized, use -l to show in full.

修改内核配置,允许ipv4转发,并使配置生效

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

开启IP伪装(貌似和地址转换有关)

[root@host10 zones]# firewall-cmd --add-masquerade --zone=public 
success

配置转发规则,8000端口的流量转发到10.XXX.XXX.XX:10376

[root@host10 zones]# firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=10376:toaddr=10.***.***.*** 
success
You have new mail in /var/spool/mail/root

对外开放8000端口

[root@host10 zones]# firewall-cmd --zone=public --add-port=8000/tcp 
success

查看确认配置的策略

[root@host10 zones]#  firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client ssh
  ports: 8000/tcp
  protocols: 
  masquerade: yes
  forward-ports: port=8000:proto=tcp:toport=10376:toaddr=10.***.***.***
  source-ports: 
  icmp-blocks: 
  rich rules: 

在这里插入图片描述

访问测试
telnet 跳板机的 8000端口可以看到连接到了mysql如下:
在这里插入图片描述

mysql工具连接测试,连接成功

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做题关键点--位操作符

x |(x1)去掉从右开始的第一个0 a^a0,异或遵循交换律,即只要存在偶数个a,这部分结果为0. a^0a 与0异或为本身 寻找奇数_牛客题霸_牛客网 不用加减乘除做加法_牛客题霸_牛客网 二进制进行加法运算时与十进制的思路是…

Qt之QtConcurrent无需使用低级线程原语编写多线程

几个要点: 通过QtConcurrent::run()返回的QFuture不支持取消、暂停,返回的QFuture只能用于查询函数的运行/完成状态和返回值。 请注意:该函数可能不会立即运行; 函数只有在线程可用时才会运行。 导入模块 在 C API changes 有关于 Qt Concu…

Linux常用命令——rename命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) rename 用字符串替换的方式批量改变文件名 补充说明 rename命令用字符串替换的方式批量改变文件名。 语法 rename(参数)参数 原字符串:将文件名需要替换的字符串; 目标字符串&#x…

GuLi商城-人人开源搭建前端项目

人人开源: 下载到本地并解压: VsCode打开解压好的项目: MAC安装Nodejs,略 参考:MAC(m1)-安装Nodejs_ZHOU_VIP的博客-CSDN博客 MAC打开终端: npm install类似maven下载所有的组件 报错: 解…

Vue基础10之插件、scoped与lang的样式

Vue基础10插件scoped与lang样式scopedlang样式安装lessless样式的使用总结插件 plugins.js: export default {install(Vue){console.log("Vue:",Vue)//全局过滤器Vue.filter(mySlice,function (value){return value.slice(0,5)})//定义全局指令Vue.directive(fbind,…

【数据结构】8.6 基数排序

文章目录基数排序定义基数排序算法基数排序算法分析基数排序定义 前述的各类排序方法都是建立在关键字啊比较的基础上,而分配类排序不需要比较关键字的大小,它是根据关键字中各位的值,通过对待排序记录进行若干趟分配与收集来实现排序的&…

微信小程序 Springboot卫生应急培训报名系统java

本文以微信开发者、Springboot框架、java为开发技术,实现了一个卫生应急培训小程序。卫生应急培训小程序的主要使用者分为管理员服务端和用户客户端,其中管理员服务端权限:首页、个人中心、用户管理、通知公告管理、在线学习管理、培训管理、…

中国电子学会2021年09月份青少年软件编程Python等级考试试卷一级真题(含答案)

青少年软件编程(Python)等级考试试卷(一级) 分数:100.00 题数:37 一、单选题(共25题,每题2分,共50分) 1. 取整除的运算符是?&#x…

每天一道大厂SQL题【Day02】

每天一道大厂SQL题【Day02】 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题,以每日1题…

nuxt.js项目搭建

nuxt[文档数据] https://www.xuanmo.xin/details/3240 nuxt文档:https://zhuanlan.zhihu.com/p/76703748 nuxt文档:https://www.cnblogs.com/chanwahfung/p/12899714.html axios:https://axios.nuxtjs.org/ 参考:https://www.w3cschool.cn/nuxtjs/nuxtjs-b4kl36fw.html 案例实现…

编程的GCRoot应该怎么去找?

本文导读 本文通过抛出一个编程的上帝视角问题,我们了解什么是编程的上帝视角,编程如何学习以及编程的root是什么,找到root之后,我们有如何利用上帝视角去解决编程中的推理。 一、编程的上帝视角 上帝视角乃是叙述视角中&#…

23.网络编程(一)

目录 一.网络编程 1.1 什么是网络编程 1.2 网络通信基本模式 1.3 网络通信三要素 1.4 IP地址 1.4.1 什么是IP地址 1.4.2 IP的常见分类 1.4.3 IP地址基本寻路 1.4.4 IP地址形式 1.4.5 IP常用命令(在命令提示符窗口中使用) 1.4.6 特殊IP地址 1…

Docker安装Postgresql

测试环境:Centos7.x docker1.13.1 postgres12本文使用的是在镜像仓库直接pull的方式,非Dockfile的方式。Postgresql的Dockerfile参考:https://github.com/docker-library/postgres/blob/master/12/alpine/Dockerfile常用命令docker命令大全…

MySQL的卸载

步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。右击“此电脑“,选择”管理“,可以在“服务”列表找到“MySQL8.0”的服务,如果现在“正在运行”状态,可以右键单击服务,选择“停止”选…

java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Kafka【Kafka的概念、单机及集群部署】~整起

Rust一、Kafka基本概念1.Kafka是什么?Kafka与Flume?2.Kafka的整体架构:3.kafka的生产者与消费者:4.kafka的Topic与日志、分区【分区可以提高咱们kafka的写入能力和存储能力】5.kafka的顺序写入:6.kafka的零拷贝技术7.k…

MQ 队列消息

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成,通过提供消息传递和消息排队模型,它可以在分布式环境下拓展进程间的通信,对于消息中间件,常见的角色大致也就有Producer(生产者).Consumer(消费者) MQ 消息中间件 消息队列 …

【数据结构基础】树 - 基础和Overview

知识体系结构树树是一种数据结构,它是n(n>0)个节点的有限集。n0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。区别于线性表一对一的元素关系,树中的节点是一对多的关系。树具有以下特点:n>0时,根节点是…

Linux嵌入式开发——文件权限

文章目录Linux嵌入式开发——文件权限文件权限文件权限管理修改文件权限修改文件所属用户拥有者拥有者组Linux嵌入式开发——文件权限 文件权限 文件权限是指不同的用户或用户组对某个文件拥有的权限,文件的权限分为三种,并且可以使用二进制表示文件权…

kerberos环境下parcel方式部署flink1.15.3 基于CDH6.3.2 Flink on Yarn

1.1 Flink on Yarn的优势相对于 Standalone 模式,在Yarn 模式下有以下几点好处:1.资源按需使用,提高集群的资源利用率;2.任务有优先级,根据优先级运行作业;3.基于 Yarn 调度系统,能够自动化地处…

通信原理笔记—模拟信号的数字编码

目录 低通与带通信号的抽样定理: 模拟信号数字编码的基本概念: 模拟信号的抽样: 低通信号的理想抽样: 低通采样定理: 采样方式: 冲激采样示例: 低通信号的自然抽样: 带通抽样…