Документация nginx "Единицы измерения файла конфигурации" на http://nginx.org/en/docs/syntax.html говорит:
Размеры могут быть указаны в байтах, килобайтах (суффиксы k и K) или мегабайтах (суффиксы m и M).
Это неясно, потому что килобайт официально определяется как 1000 байтов, а мегабайт официально определяется как 1000000 байтов, но часто он используется для обозначения 1024 байтов и 1024 * 1024 байтов соответственно. Какой именно килобайт размера используется в файлах конфигурации nginx? Когда в документации указано, что по умолчанию 1m
в том, что 1000000
или 1048576
?
Глядя на источник на http://hg.nginx.org/nginx/file/15056a29841a/src/core/ngx_parse.c (это версия ngx_parse.c в 1.5.6, но функция выглядит так же в Версия 0.3.53, и вы можете проверить текущую версию Вот), оказывается, что k или K представляют 1024 байта, то есть кибибайты (KiB), а m или M представляют мебибайты (MiB), то есть 1024 KiB.
ssize_t
ngx_parse_size(ngx_str_t *line)
{
u_char unit;
size_t len;
ssize_t size;
ngx_int_t scale;
len = line->len;
unit = line->data[len - 1];
switch (unit) {
case 'K':
case 'k':
len--;
scale = 1024;
break;
case 'M':
case 'm':
len--;
scale = 1024 * 1024;
break;
default:
scale = 1;
}
size = ngx_atosz(line->data, len);
if (size == NGX_ERROR) {
return NGX_ERROR;
}
size *= scale;
return size;
}