在 nginx ngx_http_limit_req_module 中使用 $http_x_forwarded_for 而不是 $binary_remote_addr 会使用多少空间?

Gle*_*ven 2 nginx

在它的文档ngx_http_limit_req_module

客户端 IP 地址用作密钥。请注意,这里使用的是 $binary_remote_addr 变量而不是 $remote_addr,它允许将状态大小减少到 64 字节。一兆字节的区域可以保留大约 16,000 个 64 字节的状态。如果区域存储耗尽,服务器将向所有后续请求返回 503(服务暂时不可用)错误。

不幸的是,如果您不使用 IP 地址的二进制版本,它无法说明它将有多大。我需要使用$http_x_forwarded_for作为关键,在这种情况下每个状态有多大?

Ter*_*nen 5

这是一个有根据的猜测,而不是 100% 的知识。

IP 地址以二进制形式占用 4 个字节,因为它是一个 32 位整数。

文本格式的IP地址占15个字节(xxx.xxx.xxx.xxx),字符串需要结束分隔符,空字符。

因此我最好的猜测是 IP 地址需要 16 个字节而不是 4 个字节。在这种情况下,这意味着每个状态将占用 72 个字节而不是 64 个字节。

但是,根据内部实施情况,可能需要更多时间。