You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Traefik反向代理同域名部署WordPress与Django的路由配置问题

配置调整步骤

1. 补全docker-compose production.yml配置

先在volumes区域新增WordPress相关存储卷,再在services区域添加WordPress和对应数据库服务,原有配置全部保留即可:

version: '3'

volumes:
  # 原有卷保留
  production_postgres_data: {}
  production_postgres_data_backups: {}
  production_traefik: {}
  # 新增wordpress相关卷
  production_wordpress_data: {}
  production_wordpress_db_data: {}

services:
  # 新增wordpress及依赖数据库服务
  wordpress:
    image: wordpress:latest
    restart: always
    environment:
      WORDPRESS_DB_HOST: wordpress-db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: 替换为你的强密码
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - production_wordpress_data:/var/www/html
    depends_on:
      - wordpress-db

  wordpress-db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: 替换为你的强密码
      MYSQL_ROOT_PASSWORD: 替换为你的强root密码
    volumes:
      - production_wordpress_db_data:/var/lib/mysql

  # 以下原有django、postgres、traefik、redis服务全部保留
  django:
    # 原有配置不变
    ...

2. 修改traefik.yml路由规则

仅需要修改http区块的配置,新增优先级更高的WordPress路由和服务定义,原有Django相关配置全部保留即可:

http:
  routers:
    # 新增WordPress路由,优先级设为100,高于默认路由确保匹配优先
    wordpress-secure-router:
      rule: "(Host(`example.com`) || Host(`www.example.com`)) && (Path(`/`) || PathPrefix(`/about`) || PathPrefix(`/contact`) || PathPrefix(`/wp-`))"
      entryPoints:
        - web-secure
      service: wordpress
      tls:
        certResolver: letsencrypt
      priority: 100
    # 原有Django路由保留,优先级更低,未匹配到WordPress规则的请求全部走Django
    web-secure-router:
      rule: "Host(`example.com`) || Host(`www.example.com`)"
      entryPoints:
        - web-secure
      middlewares:
        - csrf
      service: django
      tls:
        certResolver: letsencrypt

  middlewares:
    # 原有csrf配置不变
    ...

  services:
    django:
      # 原有django服务配置不变
      ...
    # 新增WordPress服务定义,指向wordpress容器的80端口
    wordpress:
      loadBalancer:
        servers:
          - url: http://wordpress:80

规则里的PathPrefix(/wp-)是为了匹配WordPress的静态资源、管理后台等默认路径,避免出现样式丢失、后台无法访问的问题

3. 生效验证

所有配置修改完成后,执行以下命令重启服务:
docker-compose -f production.yml up -d --build
启动完成后即可验证规则:

  • 访问/、/about、/contact路径返回WordPress内容
  • 访问其他路径返回Django系统内容

注意事项

  • 所有占位的密码字段请替换为自己的强密码
  • 如果WordPress有额外自定义路径,直接在路由规则的条件中新增对应PathPrefix(/自定义路径)规则即可
  • 若WordPress出现跳转异常,进入WordPress后台的「设置」-「常规」,确认站点地址配置为你的正式域名https://example.com

内容的提问来源于stack exchange,提问作者Mikhail Skorikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:45:03