POST NGINX 服务器上的响应正文为空

POST response body empty on NGINX server

我是 运行 一个在 NGINX 服务器上使用 SSL 证书的 Node.js 应用程序。我刚刚意识到我的所有 POST/PUT 应用程序尝试 return 到前端的请求都是空的;本质上,响应是一个空字符串。该应用程序在本地环境和 Heroku 中运行良好,所有图像和 GET 请求都按应有的方式解析。

我期待 JSON 在我的 HTTP 响应中返回,无论请求是成功还是有错误。现在我得到一个空字符串。下面是我的回复截图,你会注意到 Content Length 头完全不见了。

Screenshot of my headers

本质上,是不是我的 NGINX 代理有问题导致我的 HTTP 响应返回空白?

下面是我的 NGINX 配置文件

server {
    listen 80;

    server_name blah.com;
    rewrite ^/(.*) https://blah.com/ permanent;
}
server {
    # SSL configuration
    #
    listen 443 ssl default_server;
    ssl_certificate XXX;
    ssl_certificate_key XXX;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name blah.com;

    location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }
}

以下是应用程序生成的访问日志:

24.123.110.242 - - [27/Jul/2017:21:10:45 +0000] "POST /sign-up         HTTP/1.1" 400 5 "https://app.quiqmath.com/sign-up" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
24.123.110.242 - - [27/Jul/2017:21:10:47 +0000] "POST /socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=polling&t=Ls5upja&sid=4mrvSlNzMv9ZCetHAAAL HTTP/1.1" 502 182 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8"
24.123.110.242 - - [27/Jul/2017:21:10:47 +0000] "GET /socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=polling&t=Ls5ujej&sid=4mrvSlNzMv9ZCetHAAAL HTTP/1.1" 200 4 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8"
24.123.110.242 - - [27/Jul/2017:21:10:48 +0000] "GET /socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=polling&t=Ls5upzL HTTP/1.1" 200 101 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8"
24.123.110.242 - - [27/Jul/2017:21:10:49 +0000] "GET /socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=polling&t=Ls5up_l&sid=XSl8MUuC7TH6v4iLAAAM HTTP/1.1" 200 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8"

在版本大于 0.11.X 且小于 1.0 的 Sails.js 应用程序中,当应用程序是在生产模式。要解决此问题,请将 Sails.js 应用程序升级到 1.X 和 documentation can be found here 如何执行此操作,或者您可以注释掉 api/responses/badRequest.js 文件中的以下行:

  // Only include errors in response if application environment
  // is not set to 'production'.  In production, we shouldn't
  // send back any identifying information about errors.
  if (sails.config.environment === 'production') {
    //data = undefined;
  }