【Azure App Service】PHP页面上传文件413错误的解决方案

问题描述

在使用 Azure App Service(Linux + PHP) 部署 Web 应用时,如果上传文件大于1MB,就会遇到 HTTP 413(Request Entity Too Large) 错误。

错误截图

问题解答

一、HTTP 413 错误的本质含义

413 Request Entity Too Large 是标准 HTTP 状态码,表示:

客户端提交的请求体(Request Body)大小超过了服务器当前允许的最大限制。

在 Azure App Service(Linux)环境中,这个错误并不一定来自前端网关(Frontend),而更常见的来源是 App Service 容器内部的 Web Server(如 Nginx)或运行时(如 PHP)。


二、Nginx 默认的 client_max_body_size 限制

在 Linux App Service 中,平台内置 Nginx 作为 Web Server。

Nginx 会在请求到达应用之前,对请求体大小进行校验。

  • 当上传文件大小超过 Nginx 允许的最大值时(Nginx 对上传请求体大小的默认限制为 1 MB,需要通过 client_max_body_size 参数修改大小)
  • Nginx 会直接返回 413, 请求不会进入 PHP

如果未显式配置,该值通常较小,不适合文件上传场景。通过自定义 Nginx 配置,将其调整为更大的值(例如 20MB),即可解除这一层限制。


解决方案

修改 App Service默认Nginx的client_max_body_size参数

第一步:把App Service默认的Nginx配置复制到home/site/wwwroot目录中

进入kudu,选择SSH到Application, 执行cp命令

cp /etc/nginx/sites-available/default /home/site/wwwroot/default

操作截图:

第二步:添加client_max_body_size参数并设置为20M

在Kudu页面的File Manager中,进入home/site/wwwroot目录中,选择default文件,直接UI上添加(client_max_body_size 20M;)后保存。

操作截图:

第三步:覆盖nginx default配置并重启

因修改了默认的nginx配置,为了使得配置生效,需要用新的配置文件覆盖默认配置,并重启nginx服务。使用如下命令:

cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload

此命令将默认 NGINX 配置文件替换为存储库根目录中命名 default 的文件,并重新启动 NGINX。

操作截图


结论

完成以上三步之后,刷新php应用的上传页面,再次上传小于20MB的文件,成功。

参考资料

Azure App Service(Linux)自定义 Nginx 配置

https://learn.microsoft.com/azure/app-service/configure-language-php?pivots=platform-linux#change-the-site-root

Nginx 官方文档:client_max_body_size

https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

Syntax: client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location
Sets the maximum allowed size of the client request body. If the size in a request exceeds the configured value, the 413 (Request Entity Too Large) error is returned to the client. Please be aware that browsers cannot correctly display this error. Setting size to 0 disables checking of client request body size.


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关推荐
BPM6662 小时前
2026主流工作流引擎评测:从开源引擎到企业平台,AlphaFlow、Camunda、Flowable、IBM、Microsoft 怎么选?
microsoft·开源
买大橘子也用券2 小时前
one_line_php-wp
web安全·网络安全·php
Dream of maid11 小时前
Python12(网络编程)
开发语言·网络·php
vortex518 小时前
构建可审计、可分层、可扩展的SSH身份管理体系
网络·ssh·php
CCIE-Yasuo20 小时前
Win11-Microsoft Edge使用起来CPU飙升以及卡顿问题解决
前端·microsoft·edge·排故
aq553560020 小时前
编程语言对比:从汇编到PHP的四大层级解析
开发语言·汇编·php
aq553560021 小时前
四大编程语言对比:PHP、Python、Java、易语言
java·python·php
搬砖魁首21 小时前
Fabric系列 - HSM之3 区块链上的结合
区块链·php·fabric·长安链·hsm
qq_260241231 天前
将盾CDN:零信任安全架构的演进与落地实践
安全·php·安全架构