当mongo文档

时间:2017-05-07 19:51:01

标签: node.js mongodb ssl nginx http2

我正在开发一个角度为4.1.0的MEAN项目。

在我的本地主机上,一切正常运行。但是,当我部署到服务器时,检索具有8个以上问答配对的用户会导致 xhr 请求出现 net :: ERR_CONNECTION_CLOSED 错误,即angular的http模块将触发。

我托管的数字海洋小滴使用nginx反向代理并使用letsencrypt SSL证书。 我试过了:

  • 重新启动服务器,nginx服务,node.js等。
  • 在nginx配置文件中将client_max_body_size增加到20M
  • 在nginx配置文件中将large_client_header_buffers'大小增加到128k

其他重要事实:

  • GET的{​​{1}}请求永远不会到达node.js app
  • qapairs?jwt=ey..
  • 中没有提及请求
  • /var/log/nginx/error.log中显示的失败请求如下:

    /var/log/nginx/access.log

请指出我可能的方向。

chrome dev工具网络标签截图

  1. 登录到只有7个问题答案对的帐户 After logging in to an account where there are only 7 question answer pairs

  2. 然后,转到mlab.com并手动将另一个问题答案对添加到同一帐户然后刷新页面(注意现在的问题数量为8) After going to mlab.com and manually adding another question answer pair to same account and then refreshing the page

  3. 最后,登录和退出同一帐户后(注意xhr请求89.15.159.19 - - [08/May/2017:14:25:53 +0000] "-" 400 0 "-" "-" 89.15.159.19 - - [08/May/2017:14:25:53 +0000] "-" 400 0 "-" "-" 返回失败状态) After logging in and out of the same account

  4.   

    的/ etc / nginx的/启用的站点 - /默认

    qapairs?jwt=ey...
      

    QA-pairs.service.ts

         

    # HTTP — redirect all traffic to HTTPS server { listen 80; listen [::]:80 default_server ipv6only=on; return 301 https://$host$request_uri; } # etc # HTTPS ^ ^ proxy all requests to the Node app server { # Enable HTTP/2 listen 443 ssl http2; listen [::]:443 ssl http2; server_name subdomain.example.com; # Use the Let ^ ^ s Encrypt certificates ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # Include the SSL configuration from cipherli.st include snippets/ssl-params.conf; # Increase allowed URL length large_client_header_buffers 4 128k; # Increase max body size client_max_body_size 20M; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://subdomain.example.com:3001/; proxy_ssl_session_reuse off; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; proxy_redirect off; } } 函数中发现了错误。传递给getQAPairs函数中的回调,catch对象具有ProgressEvent属性   type的{​​{1}},error。{/ strong>

    eventPhase

1 个答案:

答案 0 :(得分:7)

解决方案:

  

的/ etc / nginx的/启用的站点 - /默认

# other code here

server {

   # other code here

   # Increase http2 max sizes
   http2_max_field_size 64k;
   http2_max_header_size 64k;

}

我发现这很难调试的原因是因为有

  

/var/log/nginx/error.log

中没有提及请求

并且我没有意识到nginx能够成为more verbose with its logging(duh)

因此,在将/etc/nginx/sites-enabled/default更改为包含

之后
server { 
    error_log /var/log/nginx/error.log info;
}

我看到了

2017/05/08 16:17:04 [info] 3037#3037: *9 client exceeded http2_max_field_size limit while processing HTTP/2 connection, client: 89.15.159.19, server: 0.0.0.0:443

这是我需要的错误消息。