nginx 文档中有关“配置文件测量单位”的说明位于http://nginx.org/en/docs/syntax.html说:
大小可以以字节、千字节(后缀 k 和 K)或兆字节(后缀 m 和 M)为单位指定
这不太清楚,因为千字节的官方定义是 1000 字节,兆字节的官方定义是 1000000 字节,但通常分别用来表示 1024 字节和 1024 * 1024 字节。nginx 配置文件中使用的千字节到底是多少?当文档说默认是 时,1m
是1000000
还是1048576
?
答案1
查看源代码http://hg.nginx.org/nginx/file/15056a29841a/src/core/ngx_parse.c(这是 1.5.6 版的 ngx_parse.c,但该函数在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;
}