Drupal 9.50大文件上传错误:请求发至错误服务器排查求助
排查Drupal 9.5大文件上传问题的方向
1. 验证Nginx配置的正确性与生效范围
- 确认
client_max_body_size 8MB;配置在生产站点www.site.com对应的server块中,而非全局http块或开发站点的server块。如果配置在错误的server块,生产请求不会继承该设置。 - 检查上传接口对应的
location块(如Drupal文件上传路由对应的/system/files或自定义上传路径)是否单独设置了更小的client_max_body_size,嵌套配置会覆盖上层设置。 - 执行
nginx -t验证配置语法无误,再运行systemctl reload nginx确保配置重载生效。
2. 检查PHP上传相关配置限制
Drupal的文件上传同时受PHP配置约束,需确保以下参数符合要求:
upload_max_filesize = 8M(或更大)post_max_size = 10M(需大于upload_max_filesize,因为POST请求包含文件及表单数据)memory_limit:设置足够值以处理大文件解析- 找到Ubuntu上的PHP-FPM配置文件(如
/etc/php/7.4/fpm/php.ini,根据实际PHP版本调整),修改后执行systemctl restart php7.4-fpm重启服务。 - 登录Drupal后台,访问
/admin/reports/status查看当前PHP配置值,确认修改已生效。
3. 溯源错误日志中的开发域名问题
- 检查Nginx的server块优先级:确认
www.site.com的server块未被dev9.site.com的默认server覆盖。查看Nginx配置中server_name的设置,生产站点的server块应明确指定server_name www.site.com;,若存在default_server标记,需确保生产站点的server块使用该标记。 - 排查本地/服务器的DNS解析:检查服务器hosts文件或DNS配置,确认
www.site.com未被错误解析到开发服务器IP。 - 检查Drupal的
settings.php:确认$base_url未被设置为dev9.site.com,同时排查是否存在通过环境变量动态设置站点地址的代码(如$base_url = getenv('DRUPAL_BASE_URL');)。 - 查看Drupal后台
/admin/config/system/site-information中的“站点地址”,确认是www.site.com。
4. 排查中间层(反向代理/CDN)的限制
- 若生产站点前端有反向代理、负载均衡或CDN,需检查这些中间层的请求体大小限制,确保其允许的上传大小不小于8MB。
- 确认中间层的路由规则,避免大文件上传请求被错误转发到开发服务器。
5. 检查Drupal模块与自定义代码
- 排查文件上传相关模块(如Media、Filefield Sources等)的配置,确认模块自身的上传大小限制设置为大于8MB。
- 检查自定义模块或主题中的
hook_form_alter等代码,是否修改了文件上传字段的大小限制,或篡改了上传请求的目标地址。
内容的提问来源于stack exchange,提问作者hank
相关产品推荐
相关产品推荐

