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

AlmaLinux9服务器Docker部署Caddy+PHP+MariaDB访问故障求助

问题排查与解决方案

1. 端口映射有效性检查

先确认Docker Compose中Caddy的端口映射是否正确绑定宿主机端口:

docker compose ps

正常情况下Caddy的端口列应显示0.0.0.0:80->80/tcp和0.0.0.0:443->443/tcp。若不符,修改docker-compose.yaml的Caddy服务配置:

services:
  caddy:
    # 其他配置项
    ports:
      - "80:80"
      - "443:443"

修改后重启Caddy容器:

docker compose up -d --force-recreate caddy

2. 宿主机防火墙端口开放

AlmaLinux 9默认启用firewalld,需手动开放HTTP/HTTPS端口:

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

验证端口开放状态:

firewall-cmd --list-services

确保输出包含http和https。

3. Caddy配置文件验证

进入caddy_docker目录,检查Caddyfile的基础配置是否正确:

domain.tld {
    root * /var/www/html
    php_fastcgi php:9000  # "php"需与docker-compose中PHP服务的名称一致
    file_server
}

注意:

  • root路径要和Caddy容器挂载的www目录对应(比如容器内路径是/var/www/html,宿主机映射为./www:/var/www/html)
  • php_fastcgi地址必须指向PHP服务的容器名+9000端口(PHP-FPM默认端口)

验证配置合法性:

docker compose exec caddy caddy validate

若有错误,根据提示修正后重启Caddy:

docker compose restart caddy

4. 本地网络与域名解析检查

  • 宿主机本地执行ss -tulpn | grep :80,确认80端口是否被监听。无输出则说明端口映射未生效或容器未正常启动。
  • 执行nslookup domain.tld,确认域名已正确解析到服务器公网IP。若解析正常仍超时,需检查云服务商控制台是否封禁80/443端口(部分服务商需手动在后台开放)。

5. PHP-FPM与文件权限检查

  • 修复宿主机www目录权限(匹配PHP容器默认用户UID/GID):
chmod -R 755 ./www && chown -R 1000:1000 ./www
  • 测试Caddy与PHP-FPM的连通性:
docker compose exec caddy curl -I http://php:9000

若连接失败,查看PHP容器日志排查问题:

docker compose logs php

6. 容器网络连通性检查

确认Caddy和PHP容器处于同一Docker网络:

docker inspect <caddy容器名> | grep Networks
docker inspect <php容器名> | grep Networks

若不在同一网络,修改docker-compose.yaml添加专属网络:

networks:
  lcmp-network:
    driver: bridge

services:
  caddy:
    # 其他配置项
    networks:
      - lcmp-network
  php:
    # 其他配置项
    networks:
      - lcmp-network

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:07:18