基于 Docker 的高可用 WordPress 集群部署:分布式 Nginx + Keepalived、MySQL 主从复制与 ProxySQL 读写分离

本教程指导您在 Docker 环境中部署一个高可用、高性能的 WordPress 网站,包含以下组件:

  • 负载均衡服务器(192.168.0.119 及 192.168.0.120):运行 Nginx,负责请求分发,通过 Keepalived 实现高可用,通过虚拟 IP(192.168.0.100)绑定域名 wordpress.mxdx.com
  • 主服务器(192.168.0.118):运行 MySQL 主库、ProxySQL、WordPress 和 Nginx。
  • 从服务器(192.168.0.117):运行 MySQL 从库、WordPress 和 Nginx。

架构图

正常状态

images

VIP漂移后

images

1. 架构特点

  1. MySQL 主从复制:主库(192.168.0.118)与从库(192.168.0.117)实现数据同步。
  2. ProxySQL 读写分离:部署在主库服务器,优化数据库查询性能。
  3. Nginx 负载均衡:分发请求到主库和从库的 WordPress 服务,通过分布式 Nginx 和 Keepalived 实现高可用。
  4. WordPress 文件共享:通过 NFS 共享 /data/wordpress/uploads/data/nginx/ssl 目录,新增 /data/nginx/conf 共享以支持分布式 Nginx 配置一致性。
  5. 高可用设计:Nginx Master 宕机时,Keepalived 将服务切换到 Nginx Slave,确保业务连续性。
  6. 域名绑定:通过域名 wordpress.mxdx.com 访问站点,解析到虚拟 IP(192.168.0.100)。

2. 准备工作

2.1 所有服务器通用配置

确保所有服务器(192.168.0.117、192.168.0.118、192.168.0.119、192.168.0.120)已安装 Docker 和 Docker Compose。若未安装,请参考官方文档安装。

# 创建必要目录
sudo mkdir -p /data/{mysql/{data,conf},wordpress/{html,uploads},nginx/{conf,logs,ssl},proxysql/{conf,data}}
# 新增 Nginx Slave 配置目录(192.168.0.120)
sudo mkdir -p /data/nginx/{conf,logs,ssl}  # 在 192.168.0.120 上执行

# 设置 WordPress 目录权限(通常无需手动设置)
sudo chown -R 1000:1000 /data/wordpress/{html,uploads}

提示:目录权限需与容器内用户(通常 UID/GID 为 1000)匹配。

2.2 安装 Keepalived(192.168.0.119 和 192.168.0.120)

在负载均衡服务器上安装 Keepalived:

sudo apt update
sudo apt install -y keepalived

2.3 域名解析配置

将域名 wordpress.mxdx.com 解析到虚拟 IP(192.168.0.100)。在你的 DNS 服务商处添加以下记录

记录类型 主机记录 解析线路 记录值 TTL
A wordpress 默认 192.168.0.100 600

提示:若使用本地测试,可在 /etc/hosts 文件中添加:

192.168.0.100 wordpress.mxdx.com

3. 主服务器配置 (192.168.0.118)

3.1 创建 Docker Compose 文件

在主库服务器上创建 /Docker/docker-compose.yml

mkdir -p /Docker
cd /Docker
vim docker-compose.yml

写入以下内容:

version: '3.8'
services:
  mysql:
    image: hub.yumesakura.com/library/mysql:8.0
    container_name: docker-mysql-master
    environment:
      MYSQL_ROOT_PASSWORD: 12345678
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: 12345678
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/conf:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    restart: unless-stopped
    command:
      - --server-id=1
      - --log-bin=mysql-bin
      - --binlog-format=ROW
      - --bind-address=0.0.0.0
    networks:
      - wp_network

  proxysql:
    image: proxysql/proxysql:latest
    container_name: proxysql
    ports:
      - "6032:6032"
      - "6033:6033"
    volumes:
      - /data/proxysql/conf/proxysql.cnf:/etc/proxysql.cnf
      - /data/proxysql/data:/var/lib/proxysql
    depends_on:
      - mysql
    networks:
      - wp_network

  wordpress:
    image: hub.yumesakura.com/library/wordpress:php8.2-fpm
    environment:
      WORDPRESS_DB_HOST: proxysql
      WORDPRESS_DB_PORT: 6033
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: 12345678
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - /data/wordpress/html:/var/www/html
      - /data/wordpress/uploads:/var/www/html/wp-content/uploads
      - /data/wordpress/php.ini:/usr/local/etc/php/conf.d/custom.ini
    depends_on:
      - proxysql
    networks:
      - wp_network

  nginx:
    image: hub.yumesakura.com/library/nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /data/nginx/conf:/etc/nginx/conf.d
      - /data/nginx/logs:/var/log/nginx
      - /data/wordpress/html:/var/www/html
      - /data/nginx/ssl:/etc/ssl
    depends_on:
      - wordpress
    networks:
      - wp_network

networks:
  wp_network:
    driver: bridge

3.2 配置 ProxySQL 读写分离

创建 ProxySQL 配置文件 /data/proxysql/conf/proxysql.cnf

vim /data/proxysql/conf/proxysql.cnf

写入以下内容:

datadir="/var/lib/proxysql"
admin_variables=
{
    admin_credentials="admin:admin"
    mysql_ifaces="0.0.0.0:6032"
}
mysql_variables=
{
    threads=4
    max_connections=2048
    default_query_timeout=36000000
    interfaces="0.0.0.0:6033"
    monitor_username="monitor"
    monitor_password="12345678"
}
mysql_servers=
(
    { hostgroup_id=10, hostname="192.168.0.118", port=3306, status="ONLINE", weight=1000 },
    { hostgroup_id=20, hostname="192.168.0.117", port=3306, status="ONLINE", weight=1000 }
)
mysql_replication_hostgroups=
(
    { writer_hostgroup=10, reader_hostgroup=20 }
)
mysql_query_rules=
(
    { rule_id=1, active=1, match_pattern="^SELECT.*FOR UPDATE", destination_hostgroup=10, apply=1 },
    { rule_id=2, active=1, match_pattern="^SELECT", destination_hostgroup=20, apply=1 },
    { rule_id=3, active=1, match_pattern="^INSERT", destination_hostgroup=10, apply=1 },
    { rule_id=4, active=1, match_pattern="^UPDATE", destination_hostgroup=10, apply=1 },
    { rule_id=5, active=1, match_pattern="^DELETE", destination_hostgroup=10, apply=1 }
)
mysql_users=
(
    { username="wordpress", password="12345678", active=1, default_hostgroup=10, default_schema="wordpress" }
)

3.3 配置主服务器 Nginx

创建 Nginx 配置文件 /data/nginx/conf/wordpress.conf

server {
    listen 80;
    server_name default_server;
    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/wordpress.access.log;
    error_log /var/log/nginx/wordpress.error.log;

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        access_log off;
        try_files $uri =404;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass wordpress:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header X-XSS-Protection "1; mode=block";
}

3.4 启动服务

docker-compose up -d

3.5 配置 MySQL 主从复制

进入 MySQL 容器:

docker exec -it docker-mysql-master mysql -uroot -p12345678

执行以下 SQL 创建复制用户(使用 copy 用户,密码 12345678):

CREATE USER 'copy'@'%' IDENTIFIED BY '12345678';
GRANT REPLICATION SLAVE ON *.* TO 'copy'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;

记录输出的 FilePosition 值,用于从库配置。

image image

3.6 创建 ProxySQL 监控账户

在主库 MySQL 中执行:

CREATE USER 'monitor'@'%' IDENTIFIED BY '12345678';
GRANT REPLICATION SLAVE ON *.* TO 'monitor'@'%';
FLUSH PRIVILEGES;

提示:监控账户用于 ProxySQL 检查 MySQL 服务器状态和复制延迟。

4. 从服务器配置 (192.168.0.117)

4.1 创建 Docker Compose 文件

/Docker 目录下创建 docker-compose.yml

version: '3.8'
services:
  mysql:
    image: hub.yumesakura.com/library/mysql:8.0
    container_name: docker-mysql-slave
    environment:
      MYSQL_ROOT_PASSWORD: 12345678
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: 12345678
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/conf:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    restart: unless-stopped
    command:
      - --server-id=2
      - --relay-log=mysql-relay-bin
      - --read-only=1
      - --skip-slave-start
    networks:
      - wp_network

  wordpress:
    image: hub.yumesakura.com/library/wordpress:php8.2-fpm
    environment:
      WORDPRESS_DB_HOST: 192.168.0.118
      WORDPRESS_DB_PORT: 6033
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: 12345678
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - /data/wordpress/html:/var/www/html
      - /data/wordpress/uploads:/var/www/html/wp-content/uploads
      - /data/wordpress/php.ini:/usr/local/etc/php/conf.d/custom.ini
    depends_on:
      - mysql
    networks:
      - wp_network

  nginx:
    image: hub.yumesakura.com/library/nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /data/nginx/conf:/etc/nginx/conf.d
      - /data/nginx/logs:/var/log/nginx
      - /data/wordpress/html:/var/www/html
      - /data/nginx/ssl:/etc/ssl
    depends_on:
      - wordpress
    networks:
      - wp_network

networks:
  wp_network:
    driver: bridge

4.2 配置从服务器 Nginx

创建 Nginx 配置文件 /data/nginx/conf/wordpress.conf

server {
    listen 80;
    server_name default_server;
    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/wordpress.access.log;
    error_log /var/log/nginx/wordpress.error.log;

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        access_log off;
        try_files $uri =404;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass wordpress:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header X-XSS-Protection "1; mode=block";
}

4.3 启动服务

docker-compose up -d

4.4 配置 MySQL 从库复制

进入从库 MySQL 容器:

docker exec -it docker-mysql-slave mysql -uroot -p12345678

执行以下 SQL(替换 MASTER_LOG_FILEMASTER_LOG_POS 为 3.5 节记录的值):

CHANGE MASTER TO
  MASTER_HOST='192.168.0.118',
  MASTER_USER='copy',
  MASTER_PASSWORD='12345678',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=1234;
START SLAVE;
SHOW SLAVE STATUS\G

确认 Slave_IO_RunningSlave_SQL_Running 均为 Yes.

5. 负载均衡服务器配置 (192.168.0.119 及 192.168.0.120)

5.1 创建 Docker Compose 文件

5.1.1 Nginx Master(192.168.0.119)

/Docker 目录下创建 docker-compose.yml

version: '3.8'
services:
  nginx:
    image: nginx:alpine
    container_name: load-balancer
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /data/nginx/conf:/etc/nginx/conf.d
      - /data/nginx/logs:/var/log/nginx
      - /data/nginx/ssl:/etc/ssl
    networks:
      - wp_network

networks:
  wp_network:
    driver: bridge

5.1.2 Nginx Slave(192.168.0.120)

/Docker 目录下创建 docker-compose.yml

version: '3.8'
services:
  nginx:
    image: nginx:alpine
    container_name: load-balancer-slave
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /data/nginx/conf:/etc/nginx/conf.d
      - /data/nginx/logs:/var/log/nginx
      - /data/nginx/ssl:/etc/ssl
    networks:
      - wp_network

networks:
  wp_network:
    driver: bridge

5.2 配置 Nginx 负载均衡

两个Nginx负载均衡节点(Nginx Master和Nginx Slave)均创建 /data/nginx/conf/load-balancer.conf

upstream wordpress_backend {
    server 192.168.0.118:80 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.0.117:80 weight=1 max_fails=3 fail_timeout=30s;
    keepalive 64;
}

server {
    listen 80;
    server_name wordpress.mxdx.com;
    access_log /var/log/nginx/lb.access.log;
    error_log /var/log/nginx/lb.error.log;

    location / {
        proxy_pass http://wordpress_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_redirect off;
        proxy_buffering off;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_connect_timeout 5s;
        proxy_read_timeout 10s;
    }
}

重载 Nginx 配置(在 192.168.0.119 和 192.168.0.120 上执行):

docker exec load-balancer nginx -s reload
docker exec load-balancer-slave nginx -s reload

5.3 配置 Keepalived

Keepalived 同时部署在两台负载均衡服务器(192.168.0.119 和 192.168.0.120)上,每台服务器运行 Nginx 和 Keepalived,形成主备关系,通过虚拟 IP(VIP,192.168.0.100)实现高可用。

5.3.1 Nginx Master(192.168.0.119)负载均衡节点

创建 Keepalived 配置文件:

sudo vim /etc/keepalived/keepalived.conf

写入以下内容:

global_defs {
    router_id NGINX_MASTER
}
vrrp_script check_nginx {
    script "pidof nginx"
    interval 2
    weight -20
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0  # 替换为实际网卡名称(如 ens33,可用 `ip link` 查看)
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 12345678
    }
    virtual_ipaddress {
        192.168.0.100/24  # 虚拟 IP(VIP)
    }
    track_script {
        check_nginx
    }
}

5.3.2 Nginx Slave(192.168.0.120)负载均衡节点

创建 Keepalived 配置文件:

sudo vim /etc/keepalived/keepalived.conf

写入以下内容:

global_defs {
    router_id NGINX_SLAVE
}
vrrp_script check_nginx {
    script "pidof nginx"
    interval 2
    weight -20
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0  # 替换为实际网卡名称
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 12345678
    }
    virtual_ipaddress {
        192.168.0.100/24  # 虚拟 IP(VIP)
    }
    track_script {
        check_nginx
    }
}

启动 Keepalived(在 Nginx Master(192.168.0.119)Nginx Slave(192.168.0.120) 上执行):

sudo systemctl enable keepalived
sudo systemctl start keepalived

5.4 启动服务

Nginx Master(192.168.0.119)Nginx Slave(192.168.0.120) 上执行:

docker-compose up -d

6. 文件共享配置 (NFS)

为确保 WordPress 文件和 Nginx 配置一致性,通过 NFS 共享以下目录:

  • /data/wordpress/uploads:WordPress 上传文件
  • /data/nginx/ssl:SSL 证书
  • /data/nginx/conf:Nginx 配置文件

6.1 NFS 服务端配置(主库服务器 192.168.0.118)

# 安装 NFS 服务
sudo apt install -y nfs-kernel-server

# 配置 NFS 共享
sudo vim /etc/exports

添加以下内容:

/data/wordpress/uploads  *(rw,sync,no_subtree_check,no_root_squash)
/data/nginx/ssl          *(rw,sync,no_subtree_check,no_root_squash)
/data/nginx/conf         *(rw,sync,no_subtree_check,no_root_squash)

生效配置:

sudo exportfs -a
sudo systemctl restart nfs-kernel-server

6.2 NFS 客户端配置(从库服务器 192.168.0.117 及 Nginx Slave 192.168.0.120)

# 安装 NFS 客户端
sudo apt install -y nfs-common

# 挂载 NFS 共享(192.168.0.117)
sudo mount -t nfs 192.168.0.118:/data/wordpress/uploads /data/wordpress/uploads
sudo mount -t nfs 192.168.0.118:/data/nginx/ssl /data/nginx/ssl

# 挂载 NFS 共享(192.168.0.120)
sudo mount -t nfs 192.168.0.118:/data/nginx/conf /data/nginx/conf
sudo mount -t nfs 192.168.0.118:/data/nginx/ssl /data/nginx/ssl

# 验证挂载
df -h | grep nfs

6.3 配置开机自动挂载

在 192.168.0.117 和 192.168.0.120 上编辑 /etc/fstab

sudo vim /etc/fstab

192.168.0.117 添加

192.168.0.118:/data/wordpress/uploads  /data/wordpress/uploads  nfs  defaults,_netdev,noatime  0  0
192.168.0.118:/data/nginx/ssl          /data/nginx/ssl          nfs  defaults,_netdev,noatime  0  0

192.168.0.120 添加

192.168.0.118:/data/nginx/conf  /data/nginx/conf  nfs  defaults,_netdev,noatime  0  0
192.168.0.118:/data/nginx/ssl  /data/nginx/ssl  nfs  defaults,_netdev,noatime  0  0

测试挂载:

sudo mount -a
df -h | grep -E 'uploads|ssl|conf'

提示:若挂载失败,检查 NFS 服务器状态或添加 x-systemd.automount 选项。

7. 验证配置

7.1 验证 MySQL 主从复制

在主库服务器:

docker exec -it docker-mysql-master mysql -uroot -p12345678 -e "SHOW MASTER STATUS;"

在从库服务器:

docker exec -it docker-mysql-slave mysql -uroot -p12345678 -e "SHOW SLAVE STATUS\G"

7.2 验证 ProxySQL 读写分离

进入 ProxySQL 管理界面:

docker exec -it proxysql mysql -uadmin -padmin -h127.0.0.1 -P6032

执行以下命令检查配置:

SELECT * FROM mysql_servers;
SELECT * FROM mysql_replication_hostgroups;
SELECT * FROM mysql_query_rules;
SELECT * FROM stats_mysql_connection_pool;

7.3 验证负载均衡

访问域名 wordpress.mxdx.com,多次刷新页面,检查日志确认请求分发:

tail -f /data/nginx/logs/wordpress.access.log  # 在 192.168.0.118 和 192.168.0.117 上
tail -f /data/nginx/logs/lb.access.log         # 在 192.168.0.119 和 192.168.0.120 上

7.4 验证 Nginx 高可用

  1. 检查 VIP 绑定: 在 192.168.0.119 上:

    ip addr show
    

    确认 VIP(192.168.0.100)绑定到网卡。

  2. 测试故障切换

    • 停止 Nginx Master(192.168.0.119):
      docker stop load-balancer
      
    • 在 192.168.0.120 上检查 VIP 是否接管:
      ip addr show
      
    • 通过浏览器访问 wordpress.mxdx.com,确认 WordPress 正常响应。
  3. 验证 NFS 同步

    • 在 192.168.0.118 更新 /data/nginx/conf/load-balancer.conf/data/nginx/ssl
    • 在 192.168.0.119 和 192.168.0.120 检查同步:
      ls -l /data/nginx/conf
      ls -l /data/nginx/ssl
      

7.5 验证 NFS 共享

  1. 在 WordPress 后台上传图片,检查所有节点的 /data/wordpress/uploads 是否同步。
  2. 更新主库服务器的 /data/nginx/ssl 证书,确认所有 Nginx 容器可访问最新证书。

8. 常见 ProxySQL 命令

进入 ProxySQL 命令行:

docker exec -it proxysql mysql -uadmin -padmin -h127.0.0.1 -P6032

常用命令:

SELECT * FROM mysql_query_rules;  -- 查看查询规则
SELECT * FROM mysql_servers;      -- 查看后端服务器
SELECT * FROM mysql_replication_hostgroups;  -- 查看主从配置
SELECT * FROM stats_mysql_connection_pool;   -- 查看连接池状态
SELECT * FROM stats_mysql_query_rules;       -- 查看规则命中统计
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 3;  -- 检查后端健康状态

9. 注意事项

  • 密码安全:生产环境中请使用强密码替换 12345678,包括 Keepalived 认证密码。
  • 网络配置:确保服务器间网络畅通,防火墙(若有安装)开放必要端口(80、443、3306、6032、6033,以及 VRRP 协议端口 112)。

    • 示例防火墙规则:
      sudo ufw allow proto vrrp
      sudo ufw allow 80/tcp
      sudo ufw allow 443/tcp
      
  • NFS 可靠性:生产环境建议使用 systemd.automount 或高可用 NFS 方案(如 DRBD 或 GlusterFS)。
  • 备份策略:定期备份 MySQL 数据和 WordPress 文件。
  • Keepalived 健康检查:当前检查 Nginx 进程,可添加 HTTP 健康检查以提高可靠性。
    • 示例:
      vrrp_script check_nginx {
          script "curl -s http://localhost/health > /dev/null"
          interval 2
          weight -20
      }
      
      需要在 Nginx 配置中添加 /health 端点。
  • VIP 规划:确保 VIP(192.168.0.100)未被占用,且与网络网段一致。
  • 域名配置确保 wordpress.mxdx.com 已正确解析到 192.168.0.100,并在 WordPress 后台设置站点 URL 为 https://wordpress.mxdx.comhttp://wordpress.mxdx.com

附录:带注释的 Docker Compose 文件

注意:生产环境建议使用简洁版 docker-compose.yml,避免注释导致解析问题。以下仅供学习参考。

主库服务器注释版

version: '3.8'
services:
  mysql:
    image: hub.yumesakura.com/library/mysql:8.0
    container_name: docker-mysql-master
    environment:
      # 设置 MySQL root 用户密码
      MYSQL_ROOT_PASSWORD: 12345678
      # 创建默认数据库
      MYSQL_DATABASE: wordpress
      # 创建普通用户
      MYSQL_USER: wordpress
      # 设置普通用户密码
      MYSQL_PASSWORD: 12345678
    volumes:
      # 持久化 MySQL 数据
      - /data/mysql/data:/var/lib/mysql
      # 挂载配置文件目录
      - /data/mysql/conf:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    restart: unless-stopped
    command:
      # 主库 ID
      - --server-id=1
      # 启用二进制日志
      - --log-bin=mysql-bin
      # 设置日志格式
      - --binlog-format=ROW
      # 允许外部连接
      - --bind-address=0.0.0.0
    networks:
      - wp_network
  # 其他服务配置略(与简洁版相同)
networks:
  wp_network:
    driver: bridge

从库服务器注释版(类似主库,略)。

负载均衡服务器(Nginx Slave,192.168.0.120)注释版

version: '3.8'
services:
  nginx:
    image: nginx:alpine
    container_name: load-balancer-slave  # 容器名称
    ports:
      - "80:80"  # HTTP 端口映射
      - "443:443"  # HTTPS 端口映射
    volumes:
      - /data/nginx/conf:/etc/nginx/conf.d  # 共享 Nginx 配置文件
      - /data/nginx/logs:/var/log/nginx  # 日志目录
      - /data/nginx/ssl:/etc/ssl  # SSL 证书目录
    networks:
      - wp_network
networks:
  wp_network:
    driver: bridge
梦葉樱 all right reserved,powered by Gitbook该文件最后修改时间: 2025-08-07 09:38:03

results matching ""

    No results matching ""