阿里云ecs必须用内网镜像地址才能生效,因公网镜像仍走公网链路导致高延迟和超时;vpc用户应配http://mirrors.cloud.aliyuncs.com/composer/,经典网络用户配http://mirrors.aliyuncs.com/composer/,且需严格满足repo.packagist、composer、末尾斜杠三要素,否则静默失效。

阿里云 ECS 上配 Composer 中文镜像,不换内网地址就等于没配——公网 HTTPS 镜像在 ECS 上基本无效,延迟和超时跟不用镜像一样。
为什么 ECS 必须用内网地址?
公网镜像(如 https://mirrors.aliyun.com/composer/)在 ECS 上仍走公网链路:绕 CDN、耗 TLS 握手、受跨地域带宽限制。实测延迟从 10ms 拉到 800ms+,且常卡在 “Loading composer repositories” 30 秒后才报错。
- VPC 网络用户必须用:
http://mirrors.cloud.aliyuncs.com/composer/ - 经典网络用户必须用:
http://mirrors.aliyuncs.com/composer/ - 协议必须是
http://,不是https://;末尾/不可省略;域名不能拼错成aliyun.com
验证是否真走内网:curl -I http://mirrors.cloud.aliyuncs.com/composer/ 返回 200 或 403;nslookup mirrors.cloud.aliyuncs.com 解析出的 A 记录必须是内网 IP(如 100.100.2.136)。
配置命令三要素缺一不可
这条命令只对 VPC 环境生效:composer config -g repo.packagist composer http://mirrors.cloud.aliyuncs.com/composer/。漏一个就静默失效,install 还走 packagist.org。
-
repo.packagist是单数,写成repos.packagist或packagist.org都无效 -
composer是 type 值,不能省略,也不能写成vcs或空字符串 - URL 必须以
http://开头、结尾带/,不能加/packages.json后缀
配完立刻验证:composer config -g repo.packagist 输出必须是完整 JSON,形如 {"type": "composer", "url": "http://mirrors.cloud.aliyuncs.com/composer/"}。输出为空或含 https://,说明没写对。
项目级配置会直接覆盖全局镜像
只要项目根目录 composer.json 里有 "repositories" 字段(哪怕只是空数组),全局配置就完全失效——这是 Composer 的设计逻辑,不是 bug。
- 快速检查:
grep -A5 '"repositories"' composer.json - 临时清理:
composer config --unset repositories(不加-g),再composer clear-cache - 若需保留私有源,应手动编辑
composer.json,把内网镜像作为"packagist"子项写进"repositories",并显式加上"packagist.org": false
CI/CD 或 Docker 构建中更要注意:sudo composer config -g 写进了 root 用户的 ~/.composer/config.json,但构建进程常用 www-data 或普通用户身份运行,根本读不到。
加速不止靠镜像,还得关掉干扰项
镜像只加速下载,不加速依赖解析。“Resolving dependencies” 卡住,和网络无关。
-
composer install必加:--no-dev --prefer-dist --optimize-autoloader --classmap-authoritative --no-interaction - ECS 上建议设环境变量:
COMPOSER_IPV4=1(绕过 IPv6 探测延迟) - Xdebug 必须关:
XDEBUG_MODE=off composer install,否则性能掉 50% 以上 -
composer.lock被删或没提交,install实际退化为update,求解器暴力试版本组合,卡死常见
真正容易被忽略的是:ECS 内网 DNS 解析慢、NAT 网关干扰、弹性公网 IP(EIP)绑定后默认走公网——这些都会让内网镜像失效,得一个个验证,不能只信“没开 EIP 就一定走内网”。











