nginx - ApolloClient 3 并发 30 graphql 订阅调用从 nginx 返回 502
问题描述
在我的 reactjs 客户端中使用 Apollo Client 3。我们有 nginx 1.17.8 将传入请求反向代理到 .net core 2.1 后端 api。我们的 nginx 和 .net 核心 api 在 Openshift 4.4 上各自的 pod 中运行 一切正常,除非我们向 nginx 发送 30 个并发的 graphql 订阅请求。Nginx 开始突然返回 502 bad gateway response。然后,我们需要在 Apollo Client 中使用重试逻辑来处理这种情况。尽管我们可以通过 10 次重试来解决它,但这只能是一个临时解决方案,因为它会导致进程严重延迟。我们需要找到一个解决方案来阻止 nginx 发送 502 错误请求并优雅地处理这些并发订阅请求。我们是否应该增加一些参数让 nginx 能够将这样的并发 http 调用升级到 websocket?
Nginx配置如下;
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
map $http_origin $origin_allowed {
default 0;
https://${MY_DOMAIN_NAME} 1;
# ... add more allowed origins here
}
map $origin_allowed $origin {
default "";
1 $http_origin;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 8081 ssl http2;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/certs/cert.key;
server_name ${MY_DOMAIN_NAME};
location ~ ./myapiservice1$ {
proxy_pass https://myapiservice1:49253;
proxy_http_version 1.1;
proxy_ssl_server_name on;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}
}
}
解决方案
推荐阅读
- node.js - 登录系统nodejs在heroku中不起作用
- php - 我想在每个月开始时将一些数据从表传递到另一个表
- c# - 将 ASP.NET Core API 部署到本地 IIS 错误 500
- javascript - 通过将鼠标悬停在其中一个按钮上来交换两个按钮的标签?
- python-3.x - 如何检查列表中是否存在字典值并替换
- angular - 如何在 Angular 10 中获取上一页 URL
- javascript - 使用 Hooks 构建 react-bootstrap 表单
- javascript - 无法在 Firefox for Android 中激活 navigator.storage.persist
- spring-boot - HttpServletRequest 返回 emty 阅读器
- html - 如何通过动态更改将电子表格链接到 wordpress?