配置文件#

Angie使用基于文本的配置文件。默认情况下,该文件名为 angie.conf,其位置由 --conf-path 构建参数指定,通常位于 /etc/angie 目录中。

配置文件通常由以下上下文组成:

  • events – 通用连接处理

  • http – HTTP流量

  • mail – 邮件流量

  • stream – TCP和UDP流量

  • wasm_modules – WASM运行时

在这些上下文之外的指令被视为在 main 上下文中:

user angie; # 'main'上下文中的指令

events {

    # 连接处理的配置
}

http {

    # 针对HTTP的特定配置,影响所有虚拟服务器

    server {

        # HTTP虚拟服务器1的配置
        location /one {

            # 处理以'/one'开头的URI的配置
        }
        location /two {

            # 处理以'/two'开头的URI的配置
        }
    }

    server {

        # HTTP虚拟服务器2的配置
    }
}

stream {

    # 针对TCP/UDP的特定配置,影响所有虚拟服务器
    server {

        # TCP虚拟服务器1的配置
    }
}

为了简化配置管理,我们建议在主 angie.conf 文件中使用 include 指令来引用特定功能文件的内容:

include /etc/angie/http.d/*.conf;
include /etc/angie/stream.d/*.conf;

继承#

通常,子上下文(包含在另一个上下文中,被视为其父上下文)继承在父级定义的指令设置。有些指令可以出现在多个上下文中;在这种情况下,可以通过在子上下文中包含指令来覆盖从父级继承的设置。

语法#

计量单位#

尺寸可以用字节(无后缀)、千字节(后缀 kK)或兆字节(后缀 mM) 指定,例如,"1024" (字节)、"8k""1m"

时间间隔可以用毫秒、秒、分钟、小时、天等指定,使用以下后缀:

ms

毫秒

s

m

分钟

h

小时

d

w

M

月(假设等于30天)

y

年(假设等于365天)

可以通过按从最重要到最不重要的顺序指定多个单位并可选择用空格分隔来组合在一个值中。例如,"1h 30m" 指定的持续时间与 "90m""5400s" 相同。没有后缀的值被解释为秒。建议始终指定后缀。

某些时间间隔只能以秒级分辨率指定。

指令#

每个指令由一个名称和一组参数组成。如果指令的任何部分需要包含空格,则应使用引号括起来或转义空格:

add_header X-MyHeader "foo bar";
add_header X-MyHeader foo\ bar;

如果命名参数需要空格并且使用引号,则其名称也必须用引号括起来:

server example.com "sid=server 1";

设置哈希#

为了高效处理静态数据集,如服务器名称、map 指令值、MIME类型和请求头名称,Angie利用哈希表。在启动和每次重新配置期间,Angie确定这些哈希表的最佳大小,以确保存储具有相同哈希值的键的桶大小不超过配置的参数(hash bucket size)。表的大小以桶为单位进行测量,并进行调整,直到其超过 hash max size 参数。大多数哈希表都有相应的指令来调整这些参数,例如 server_names_hash_max_sizeserver_names_hash_bucket_size 用于服务器名称。

hash bucket size 参数对齐为处理器缓存线大小的倍数。此对齐通过减少内存访问次数提高了现代处理器上的键搜索效率。如果 hash bucket size 等于一个缓存线大小,则在键搜索期间的最大内存访问次数将是两次:一次计算桶地址,另一次在桶内搜索。因此,如果Angie指出 hash max sizehash bucket size 应该增加,请从增加`hash max size`开始。

重新加载配置#

要应用对配置文件的更改,必须重新加载它。可以在配置语法检查之前重新启动Angie进程:

$ sudo angie -t && sudo service angie restart

或者,可以重新加载服务以应用新配置而不中断当前请求的处理:

$ sudo angie -t && sudo service angie reload