如果我在 Nginx 中有两个服务器块,并且它们都使用相同的上游定义。 在这种情况下,max_conns 限制将如何工作?
我假设两个服务器块的最大连接数和保持连接数均限制为 100。那么总的来说,以下服务器块的 max_conns 总数可以达到 200 个?
upstream example {
server example.com:443 max_conns=100;
keepalive 90;
}
server {
listen 1.1.1.1:80;
server_name proxy.site.net;
proxy_pass https://example
proxy_bind 1.1.1.1 transparent;
}
server {
listen 1.1.1.2:80;
server_name proxy.site.net;
proxy_pass https://example
proxy_bind 1.1.1.2 transparent;
}
我的源站限制每个 IP 最多可同时连接 100 个。因此,我通过为每个服务器块使用不同的 IP 来拆分流量。因此,我希望每个服务器块(或每个公共 IP)实现 100 个并发连接。我该怎么做?
拥有两个服务器块的目的是能够处理双倍数量的请求。
更新:
源是一个云提供商,它对“每个 IP 的连接数”设置了一些硬性限制,以避免过载。源表示每个 IP 地址最多可以有 100 个并发 HTTP 连接。如果同一个 IP 尝试建立连接号 101,源会抛出错误。因此,我想使用两个 IP 来同时建立 200 个到源的并发连接。如果您知道应该在我的代码中更改什么才能实现它,请帮忙。–
更新2:
下面是我使用的最新代码,通过在服务器的公共 IP 上使用 DNS 循环来实现每秒 200 个请求。
我有两个不同的 IP 在两个服务器块中监听,并且这些服务器块有两个不同的上游名称。
我现在假设,如果 100 个人在 DNS 循环中使用第一个 IP,而接下来的 100 个人使用第二个 IP,那么我将能够同时为 200 个人提供服务。尽管我的源站限制每个 IP 只能连接 100 个。
请告诉我该代码是否正确?
upstream example {
server example.com:443 max_conns=100;
keepalive 90;
}
upstream example2 {
server example.com:443 max_conns=100;
keepalive 90;
}
server {
listen 1.1.1.1:80;
server_name proxy.site.net;
proxy_pass https://example
proxy_bind 1.1.1.1 transparent;
}
server {
listen 1.1.1.2:80;
server_name proxy.site.net;
proxy_pass https://example2
proxy_bind 1.1.1.2 transparent;
}