2017-07-26 24 views
1

我在帶有SSL證書的NGINX服務器上運行Node.js應用程序。我剛剛意識到,應用程序試圖返回到前端的所有POST/PUT請求都是空的;本質上,響應是一個空字符串。該應用程序在Heroku和本地環境中都可以正常工作,並且所有圖像和GET請求都應該如此解決。在NGINX服務器上POST POST響應正文

我期待JSON在我的HTTP響應中回來,無論請求是成功的還是有錯誤的。現在我得到一個空字符串。以下是我的回覆截圖,您會注意到內容長度標題完全丟失。

Screenshot of my headers

從本質上講,是有什麼不妥阻止我的HTTP響應回來空白我NGINX代理?

下面是我的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" 
+0

位置塊的配置看起來繁瑣,因爲某些默認值很少需要更改,尤其是在調試期間沒有任何原因,所以一次更改多個值是非常複雜的錯誤。我建議禁止大量自定義指令,獲取Nginx訪問日誌,後端日誌,更新描述以使問題可以回覆。 – Anatoly

+0

@Anatoly我更新了我的問題,添加了日誌,並簡化了我的配置。 –

+0

HTTP 400是有效的響應代碼,它似乎是一個已知問題,可以通過更改後端配置來解決:https://github.com/socketio/socket.io/issues/1942#issuecomment-299764672 – Anatoly

回答

1

在有一個版本Sails.js應用程序比0.11.X更大並且小於1.0時,res.badRequest()響應會在應用程序處於生產模式時從響應中除去數據。爲了解決這個問題,要麼升級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; 
    } 
相關問題