nginx 配置文件需要千字节还是千字节

Old*_*Pro 10 nginx

http://nginx.org/en/docs/syntax.html上关于“配置文件测量单位”的 nginx 文档说:

可以以字节、千字节(后缀 k 和 K)或兆字节(后缀 m 和 M)为单位指定大小

这个不清楚,因为千字节官方定义为1000字节,兆字节官方定义为1000000字节,但经常被用来分别表示1024字节和1024*1024字节。nginx 配置文件中使用了多少千字节?当文档说默认1m是那个10000001048576

Old*_*Pro 15

查看http://hg.nginx.org/nginx/file/15056a29841a/src/core/ngx_parse.c上的源代码(这是 1.5.6 中 ngx_parse.c 的版本,但功能在0.3.53版本,你可以在这里查看当前版本),出现k或K代表1024字节,即kibibytes(KiB),m或M代表mebibytes(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;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!截至 2018-11-15,这仍然是正确的。将来阅读此评论的任何人都可以通过此链接到“默认”分支查找当前实现:http://hg.nginx.org/nginx/file/default/src/core/ngx_parse.c (3认同)