【发布时间】:2022-11-09 14:56:57
【问题描述】:
我依靠 Steam API 来让我的网站正常工作。一开始一切都很好,但是现在该网站越来越受欢迎,随着 API 达到速率限制,我不断收到 429 个错误代码。我使用 pm2 和 nginx 在 EC2 实例上托管该站点。有没有办法避免达到这些速率限制?
我已经进行了更改,因此除非需要,否则它不会从 API 中获取,但问题仍然存在。为了避免这个问题,我可以用 nginx 做些什么吗?我在端口 3005 上托管 api 我在想也许我可以在不同的端口上设置几个 api,但这看起来真的很整洁。另一种方法是将 API 托管在不同的 EC2 上,但这样做时我遇到了一些会话问题。
server {
root /home/ubuntu/apps/norskins-app/client/build;
index index.html index.htm index.nginx-debian.html;
server_name mywebsite.com;
location / {
try_files $uri /index.html;
}
location /api {
proxy_pass http://localhost:3005;
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;
}
Under here is a bunch of other stuff setup byCertbot
}
【问题讨论】:
-
你达到什么速率限制?谁负责执行该限制?这是 AWS 的事情吗?如果是这样,您可能需要调整您的托管计划并支付您需要的任何限制。关键是有人正在对你实施这个限制,这就是你需要去提高它的地方。
-
我依赖的 Steam API 阻碍了我。它是一个外部 API。
-
使用该 API 时的服务条款是什么?您首先需要知道您可以使用它做什么,然后您可能会开发出一种保持在这些限制内的方法。向我们展示您正在使用的代码和逻辑也可能会有所帮助,因为可能有更有效的方法来完成您正在做的事情,而不需要尽可能多的 API 调用。到目前为止,根据您的问题,我们无能为力。据我所知,这与代理没有任何关系。您只是调用 API 的次数超出了允许的次数。
-
@jfriend00 所以我发现速率限制是每 30 分钟 10 个请求。现在的问题是,有时我的网站上每 30 分钟就有超过 10 个人。因此,无论我的代码是如何设置的,都会达到这一点。我现在已经做到了,因此如果用户在过去 30 分钟内联系过 API,则不会联系 API。但是假设有 11 个用户使用我的网站,我在 AWS 上托管它的 IP 最终会被禁止
-
听起来您需要一个不同的服务计划才能更多地访问该 API。那是你可以支付的吗?或者,您能否以更少的请求获得所需的所有数据并将其缓存在您的服务器上,这样当每个新用户进来时,您就不需要对 API 单独请求?
标签: node.js nginx deployment pm2