Quanto espaço usará $ http_x_forwarded_for em vez de usar $ binary_remote_addr no nginx ngx_http_limit_req_module?

1

Na documentação para o ngx_http_limit_req_module , diz

A client IP address serves as a key. Note that instead of $remote_addr, the $binary_remote_addr variable is used here, that allows decreasing the state size down to 64 bytes. One megabyte zone can keep about 16 thousand 64-byte states. If the zone storage is exhausted, the server will return the 503 (Service Temporarily Unavailable) error to all further requests.

Infelizmente, ele falha em dizer o tamanho que será se você não usar a versão binária do endereço IP. Eu preciso usar $http_x_forwarded_for como chave, qual será o tamanho de cada estado nesse caso?

    
por Glenn Slaven 17.09.2014 / 14:18

1 resposta

4

Este é um palpite educado, não um conhecimento de 100%.

Um endereço IP leva 4 bytes em formato binário, pois é um inteiro de 32 bits.

No formato de texto, um endereço IP leva 15 bytes (xxx.xxx.xxx.xxx) e a string precisa de um delimitador final, o caractere nulo.

Portanto, meu melhor palpite é que o endereço IP leva 16 bytes em vez de 4 bytes. Nesse contexto, isso significaria que cada estado levaria 72 bytes em vez de 64 bytes.

No entanto, dependendo da implementação interna, pode demorar ainda mais.

    
por 17.09.2014 / 15:09

Tags