如何通过nginx发送nodejs二进制响应?

时间:2017-10-20 14:51:12

标签: node.js nginx

提前抱歉此问题中使用的(可能)不正确的术语。

我有一个小的nodejs api,可动态生成pdf并使用缓冲区对象进行响应。返回响应的相关部分应为:

        res.write(buffer,'binary')
        res.end(null, 'binary')

在localhost上直接运行应用程序时,它会正确返回pdf。

但是,在我的服务器上运行相同的代码时,它会返回一些乱码:

%PDF-1.4
1 0 obj
<<
/Title (þÿ)
/Creator (þÿ)
/Producer (þÿ�Q�t� �5�.�5�.�1)
/CreationDate (D:20171020141355)
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
>>
endobj
4 0 obj
[... and so on]

在本地运行应用程序但连接到服务器上的正确端口时也是如此。由于代码是相同的,我假设问题可能是nginx如何处理数据。这是当前nginx设置的(可能)相关位:

   location /my/api {

            proxy_pass http://localhost:1111;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_buffering on;

    }

感谢您提供有关如何解决此问题的任何建议!

修改:将上面的节点响应更改为以下内容可解决此问题。感谢评论中的帮助!

        res.type('application/pdf')
        res.send(buffer)

0 个答案:

没有答案