NIGINX部署数据库

  1. 下载MySQL安装包,并解压多份,
  2. 将其端口设置成3307和3308(my.ini中设置)
  3. 配置数据库主从关系,保证数据库中数据一致(其他文章介绍)
  4. 配置nginx 如下:
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
stream {
    server {
       listen 3306;
       proxy_pass db;    
    }
    upstream db {
       #server 127.0.0.1:3307;
       server 127.0.0.1:3308;
    }
 
}

数据库连接端口都为3306,可以切换数据库使用3307和3308的数据库

### 使用 Nginx 代理数据库连接的配置方法 Nginx 通常用于反向代理 HTTP 请求,但其 `stream` 模块也支持 TCP 层的代理,适用于数据库连接的代理需求。通过该模块,可以实现对 Oracle、MySQL、达梦等数据库的代理访问,适用于开发、测试等临时场景,但不建议用于生产环境直接暴露数据库[^1]。 #### 配置 Nginx 代理数据库连接 在配置 Nginx 作为数据库代理时,需要启用 `stream` 模块,并在配置文件中定义 `upstream` 和 `server` 块。以下是一个通用的配置示例: ```nginx stream { upstream db_backend { server 192.168.0.10:3306; # 数据库服务器地址和端口 } server { listen 33060; # 代理监听端口 proxy_pass db_backend; proxy_connect_timeout 3s; proxy_timeout 30s; } } ``` 上述配置中,`upstream` 块用于定义后端数据库服务器的地址和端口,`server` 块则用于监听客户端连接请求,并将请求转发到对应的数据库服务器。其中 `proxy_connect_timeout` 表示连接数据库的超时时间,`proxy_timeout` 表示客户端与代理之间的超时时间[^2]。 #### 支持负载均衡的数据库代理配置 如果需要对多个数据库节点进行负载均衡,可以使用 `upstream` 块中的 `hash` 指令实现基于客户端 IP 的一致性哈希算法,确保同一个客户端始终连接到相同的数据库节点: ```nginx stream { upstream mysql_cluster { hash $remote_addr consistent; server 192.168.0.11:3306 weight=1 max_fails=3 fail_timeout=30s; server 192.168.0.12:3306 weight=1 max_fails=3 fail_timeout=30s; } server { listen 33060; proxy_pass mysql_cluster; proxy_connect_timeout 10s; proxy_timeout 300s; } } ``` 该配置中,`hash $remote_addr consistent;` 表示使用客户端 IP 地址进行一致性哈希分配,确保连接的稳定性。`weight` 表示权重,`max_fails` 和 `fail_timeout` 用于控制失败重试策略[^4]。 #### 适用场景与注意事项 使用 Nginx 代理数据库连接通常适用于临时测试、开发环境或内部网络隔离的场景,例如数据库部署在内网,而 Nginx 部署在 DMZ 区域,通过公网 IP 提供数据库访问服务。在正式生产环境中,应避免直接暴露数据库连接,建议通过数据库自身的安全机制或专用数据库代理中间件实现更安全的访问控制。 此外,配置过程中需要注意防火墙规则、数据库用户权限、SSL 加密连接等安全措施,确保代理连接的安全性和稳定性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值