Nginx 反向代理 MySQL

Nginx 反向代理 MySQL

  • 环境&组件说明
  • Nginx安装及需要的模块说明
    • Nginx 安装
    • Nginx 模块说明
      • stream
      • upstream
  • 配置示例
    • 简单配置
    • 集群
  • 随感

环境&组件说明

操作系统:CentOS Linux release 7.6.1810 (Core)
Nginx 版本:1.18.0
MySQL 版本:5.5.51(比较老,但是不影响)

Nginx安装及需要的模块说明

Nginx 安装

  • 联网如何安装 Nginx,请参考官方文档,比较简单,不做重复说明。
  • Nginx 离线安装可以参考。离线安装需要注意,因为需要使用 stream 模块。根据官方说明 : This module is not built by default, it should be enabled with the --with-stream configuration parameter.

Nginx 模块说明

stream

stream 作用 : 用来实现四层协议的转发、代理或者负载均衡等。
stream 语法说明 : 官网。

upstream

upstream 语法说明 : 官网。

配置示例

PS : 需要注意,需放在 Nginx 配置的根目录,不能放在 http 中。

简单配置

stream {
    server {
       # 数据库服务器监听端口
       listen 3306;
       proxy_connect_timeout 10s;
       # 设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
       proxy_timeout 300s;
	   # 代理转发
       proxy_pass 192.168.1.10:3306;
    }
}

集群

stream {
    # 配置集群(不需要 : 非集群并且不需要配置复杂参数)
    upstream cloudsocket {
       # 集群需要这里修改相应的配置。现在配置的是单机。
       hash $remote_addr consistent;
       server 192.168.1.10:3306 weight=5 max_fails=3 fail_timeout=30s;
    }
    server {
       # 数据库服务器监听端口
       listen 3306;
       proxy_connect_timeout 10s;
       # 设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
       proxy_timeout 300s;
	   # 代理转发
       proxy_pass cloudsocket;
    }
}

随感

鄙人感觉 : 正常情况下,如果不考虑使用 MySQL 集群,真心没必要配置反向代理。
那问题来了 : 集群如何配置呢?主要通过 upstream 实现,没有 MySQL 集群,有空再研究一下吧。

你可能感兴趣的:(Linux,database,Nginx反向代理MySQL,Nginx转发MySQL,Nginx代理MySQL,Nginx,MySQL,MySQL,Nginx)