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

Docker中配置Nginx random负载均衡遇404及实现方案咨询

问题分析与解决方案

当前配置的核心问题是Nginx的PHP处理location块缺少必要的FastCGI参数,导致PHP-FPM无法正确定位并执行脚本,从而返回404错误。另外日志输出配置也存在小问题,以下是具体修正方案:

1. 修正Nginx的default.conf配置

将location ~ \.php$块替换为以下内容,补充PHP-FPM必需的执行参数:

location ~ \.php$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   php;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}
  • root指定脚本所在根目录,与Nginx全局root保持一致;
  • include fastcgi_params加载Nginx默认的FastCGI基础参数;
  • SCRIPT_FILENAME是PHP-FPM执行脚本的核心参数,用于传递脚本的绝对路径。

同时调整日志配置,避免因main格式未定义导致日志失效:

access_log  /dev/stderr  combined;
error_log /dev/stderr warn;

combined是Nginx内置的标准日志格式,无需额外定义。

2. 确保index.php内容可验证版本

修改你的index.php内容,使其输出PHP版本信息,方便验证负载均衡效果:

<?php
echo "当前PHP版本:" . PHP_VERSION;
?>

3. 重启容器生效配置

执行命令重启所有服务:

docker-compose down && docker-compose up -d

4. 验证负载均衡效果

访问http://你的IP:8088/index.php,多次刷新页面,应该能交替看到当前PHP版本:7.4.x和当前PHP版本:8.1.x,说明random two的随机负载均衡规则已生效(该规则表示每次从两个后端节点中随机选择一个)。

额外确认点

  • Docker Compose中php7和php8的服务名与Nginx upstream配置的节点名称一致,无需修改;
  • 三个容器的index.php挂载路径完全相同,确保文件同步,当前配置无问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:25:50