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

Docker多域名配置异常:Apache与Nginx服务无法按预期分流

Docker多域名反向代理问题解决方案(Apache/Nginx共用80端口)

问题根源

  1. frontend和backend未加入nginx-proxy网络,反向代理容器无法识别这两个服务,没法按照VIRTUAL_HOST配置路由请求,最终所有流量都 fallback 到了同一个Apache服务
  2. member-frontend配置了ports: "8081:80",绕开了反向代理直接暴露端口,和多域名共享80端口的逻辑冲突
  3. backend的挂载路径是./backend:/var/www/html/backend,而Apache默认根目录为/var/www/html,直接访问api.domain.io会找不到对应内容

修正后的docker-compose.yml

version: '3'

services:
  frontend:
    image: php:apache
    volumes:
      - "./frontend:/var/www/html"
    restart: always
    networks:
      - domain-net
      - nginx-proxy  # 加入反向代理网络,让代理容器能识别此服务
    environment:
      VIRTUAL_HOST: domain.io

  member-frontend:
    image: nginx:alpine
    volumes:
      - "./member-frontend:/usr/share/nginx/html"
      - "./nginx/member.conf:/etc/nginx/conf.d/default.conf"
    # 移除端口映射,所有80端口请求由nginx-proxy统一转发
    restart: always
    networks:
      - domain-net
      - nginx-proxy
    environment:
      VIRTUAL_HOST: member.domain.io

  backend:
    image: php:apache
    volumes:
      - "./backend:/var/www/html"  # 调整挂载到Apache根目录,直接访问api.domain.io即可获取内容
    restart: always
    networks:
      - domain-net
      - nginx-proxy  # 加入反向代理网络
    environment:
      VIRTUAL_HOST: api.domain.io

networks:
  domain-net:
  nginx-proxy:
    external:
      name: nginx-proxy

额外注意事项

  • 确保nginx-proxy容器正常运行并监听主机80端口,启动命令参考:docker run -d -p 80:80 --name nginx-proxy --net nginx-proxy -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
  • 若backend必须保留原挂载路径./backend:/var/www/html/backend,需给Apache添加虚拟主机配置,将api.domain.io的根目录指向/var/www/html/backend,可通过挂载自定义Apache配置文件到容器/etc/apache2/sites-available/目录实现
  • 检查member-frontend的member.conf配置,确保Nginx规则正确,示例:
server {
    listen 80;
    server_name member.domain.io;
    root /usr/share/nginx/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}
  • 本地hosts文件需配置三个域名指向主机IP,例如:127.0.0.1 domain.io member.domain.io api.domain.io
  • 修改配置后重启服务:docker-compose down && docker-compose up -d,可查看nginx-proxy日志排查问题:docker logs nginx-proxy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:30:24