1

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

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

我的标题截图

本质上,我的 NGINX 代理是否有问题阻止我的 HTTP 响应返回空白?

下面是我的 NGINX 配置文件

server {
    listen 80;

    server_name blah.com;
    rewrite ^/(.*) https://blah.com/$1 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"
4

1 回答 1

1

在版本大于 0.11.X 且小于 1.0 的 Sails.js 应用程序中,res.badRequest()当应用程序处于生产模式时,响应会从响应中删除数据。要解决此问题,请将 Sails.js 应用程序升级到 1.X,可以在此处找到有关如何执行此操作的文档,或者您可以注释掉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;
  }
于 2017-07-28T19:09:37.710 回答