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

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

在里面文档对于它ngx_http_limit_req_module

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

不幸的是,如果不使用二进制版本的 IP 地址,它无法说明它会有多大。我需要用作$http_x_forwarded_for密钥,在这种情况下每个州会有多大?

答案1

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

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

在文本形式中,IP地址占用15个字节(xxx.xxx.xxx.xxx),并且字符串需要结束分隔符,即空字符。

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

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

相关内容