gpt4 book ai didi

node.js - net::ERR_CONNECTION_CLOSED 在 mongo 文档中有超过 7 个子文档时在远程服务器上

转载 作者:可可西里 更新时间:2023-11-01 09:21:21 26 4
gpt4 key购买 nike

我正在使用 angular 4.1.0 开发一个 MEAN 项目。

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

我托管的 digital ocean 水滴使用 nginx 反向代理并使用 letsencrypt SSL 证书。我试过:

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

其他重要事实:

  • qapairs?jwt=ey..GET 请求永远不会到达 node.js 应用
  • /var/log/nginx/error.log中没有提到请求
  • /var/log/nginx/access.log 中显示的失败请求如下:

    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 "-" "-"

请指出可能的方向。


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. 最后,在登录和退出同一帐户后(注意对 qapairs?jwt=ey... 的 xhr 请求返回失败状态) After logging in and out of the same account

/etc/nginx/sites-enabled/default

# 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;
}
}

qa-pairs.service.ts

The error is being caught here in the getQAPairs function. Being passed to the callback in the catch function a ProgressEvent object with a type property of error, eventPhase of 2.

@Injectable()
export class QaPairsService {
/* etc */

getQAPairs () {
const jwt = localStorage.getItem('jwt') ? `?jwt=${localStorage.getItem('jwt')}` : ''

return this.http.get(this.qapairsUrl + jwt)
.map(response => {
this.qapairs = response.json().map((qapair: IQAPair) => new QAPair(qapair))
this.qapairsChanged.emit(this.qapairs)
return this.qapairs
})
.catch(
(error: any) => {
error = error.json()
this.errorsService.handleError(error)
return Observable.throw(error)
}
)
}

/* etc */
}

最佳答案

解决方案:

/etc/nginx/sites-enabled/default

# other code hereserver {   # other code here   # Increase http2 max sizes   http2_max_field_size 64k;   http2_max_header_size 64k;}

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

no mention of the request in /var/log/nginx/error.log

而且我没有意识到 nginx 有能力成为 more verbose with its logging (呃)

所以在更改 /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

这是我需要的错误信息。

关于node.js - net::ERR_CONNECTION_CLOSED 在 mongo 文档中有超过 7 个子文档时在远程服务器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43835963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com