我正在寻找client body
基于 nginx 中的内容类型来限制大小的方法。
location / {
if ($content_type = "application/json") {
client_max_body_size 1M;
client_body_buffer_size 512K;
}
...
...
}
我尝试了上述if
条件,但失败并出现以下错误。
nginx: [emerg] "client_max_body_size" directive is not allowed here
我也尝试过使用这个,没有任何效果
location ~* ^.+\.json {
client_max_body_size 1M;
client_body_buffer_size 512K;
}
答案1
map
您在 http 块中使用指令,但在任何服务器块之外。
map $http_content_type $upload_limit {
default 0;
application/json 1M;
}
这将根据第一个变量的值设置第二个变量,因此默认情况下它将为 0,但如果内容类型标头是 application/json,它将为 1M。
现在您可以像这样使用自定义变量client_max_body_size $upload_limit;