【问题标题】:Piping POST body with nginx proxy_buffering and node js formidable使用 nginx proxy_buffering 和 node js 强大的管道 POST 正文
【发布时间】:2012-04-07 16:28:40
【问题描述】:

我的设置可能看起来有点奇怪,但不应该太牵强: 我有一个 apache2 实例服务器 php 页面和静态文件。我有一个节点 js 服务器使用 node-formidable 处理文件上传 (POST)。最重要的是,我使用nginx 1.0.14。 为了使用节点服务器上传 php 文件中的表单,我决定安装 nginx,这样我就可以保持相同的域、端口和协议。 所以基本上我有 /upload 我想(直接)管道到我的节点 js,最好完全在代理之外。其余的由 apache2 服务器处理:

location /upload {
    client_max_body_size        10m;
    client_body_buffer_size     128k;
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    proxy_buffer_size           4k;
    proxy_buffers               4 32k;
    proxy_busy_buffers_size     64k;
    proxy_temp_file_write_size  64k;
    send_timeout                600;
    proxy_buffering             off;
    proxy_pass https://node_backend;
}
location / {
    proxy_set_header Host $http_host;
    proxy_pass https://apache_backend;
}

这是基于https://stackoverflow.com/a/1167559

我的问题是 nginx 在将整个 POST 请求从 nginx 发送到节点 js 之前对其进行缓冲。在我的节点 js 被击中之前,我可以将其验证为 Chrome 中的进度指示器计数一直到 100%(从 0-100% 即时上传(因为它是从本地主机发送到本地主机))。

我不明白为什么 proxy_buffering off 没有按我预期的方式工作(它不应该缓冲,而是在收到请求时将请求传递给后端)。

或者...这可能以其他方式吗?

非常感谢任何提示/帮助。

  • 卡斯珀

  • 注意: 我尝试过使用不是很普遍的nginx_tcp_proxy_module。 我考虑过使用Varnish,因为它能够做我想做的事,piping directly to node-js based on url(顺便说一句,作者的优秀博文,非常值得一读),但是我正在运行一个 https 服务器(实际上是两个)所以我'不确定Varnish 是否可以做到这一点(不支持https,所以我必须包装它,但有两个域(证书)这是不可能的)

【问题讨论】:

    标签: node.js post ssl nginx buffer


    【解决方案1】:

    current docs 明确了proxy_buffering 指令只影响响应的缓冲而不影响请求。

    启用或禁用来自代理服务器的响应缓冲。

    缓冲 POST 请求所需的指令恰如其分地命名为 proxy_request_buffering。同样,来自current docs

    启用或禁用客户端请求正文的缓冲。

    (为了 Casper,值得注意的是 proxy_request_buffering 指令是在 nginx 版本 1.7.11 中添加的,发布了 several years after 这个问题被问到了。)

    【讨论】:

    • 谢谢!你的回答为我节省了很多时间。在我的服务器块中添加proxy_request_buffering off; 使其工作。
    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 2015-07-18
    • 2016-06-11
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2021-07-21
    相关资源
    最近更新 更多