如何完全禁用 Nginx 文件上传或仅在某些位置启用它

如何完全禁用 Nginx 文件上传或仅在某些位置启用它

有没有办法告诉 Nginx 完全放弃某些位置的文件上传(或整个 POST 主体)?

假设我有一个像这样的位置块:

server {
  listen [::]:80;
  listen 80;
  server_name foo.bor.com;

  return 200 '{"foo": "bar"';
}

它看起来很简单 - Nginx 总是以虚拟 JSON 进行响应。

但是,如果对该端点的请求包含较大的文件(10MB),则 Nginx 的响应会明显延迟(最多 3 秒)。我猜这是因为 Nginx 仍在解析/缓冲多部分内容。

有没有办法指示 Nginx 完全忽略 POST 正文?

答案1

server您可以通过测试来限制该块中允许的 HTTP 方法request_method 嵌入变量并返回合理的状态代码

server {
    listen [::]:80;
    listen 80;
    server_name example.com;

    if ($request_method = POST ) {
        return 405;
    }

    return 200 '{"foo": "bar"}';
}

相关内容