3

我有一个 RESTful Web 服务,它公开了一个接口,例如:

  • GET /api/v1/films/:id/thumb
  • PUT /api/v1/films/:id/thumb
  • ...

Web 服务器由 nginx 反向代理后面的 nodejs 集群组成。

我现在正在尝试配置 nginx 代理和客户端缓冲区。为此,我设置了指令

    location ~ /api/v1/films/(.*)/thumb {
        proxy_buffers 6 500k;
        proxy_busy_buffers_size 1m;
        client_max_body_size 3m;
        client_body_buffer_size 3m;
        proxy_pass http://backend;
    }

此配置完成了这项工作,但并不令人满意,因为它配置proxy_buffers 3mPUT不必要且浪费资源的请求,并且client_max_body_size 3mGET.

因此,我正在寻找一种基于 URI 之外的 http 方法配置路由的方法。

感谢所有愿意分享一点经验的人。

4

1 回答 1

3

您可以将 http 方法映射到您想要的最大正文大小。例如,这应该有效:

map $request_method $max_size {
    default       3m;
    PUT           1m;
    GET           1m;
}

location ~ /api/v1/films/(.*)/thumb {
    proxy_buffers 6 500k;
    proxy_busy_buffers_size 1m;
    client_max_body_size $max_size;
    client_body_buffer_size $max_size;
    proxy_pass http://backend;
}
于 2017-09-14T11:56:07.570 回答