label
定义可在 NGINX 配置和请求处理过程中访问的全局键值标签。
Global key-value labels for dynamic configuration
·
http
语法label key value;
默认值none
上下文http
参数2
说明
label 指令在 NGINX 中允许用户定义全局键值对,这些键值对可以通过变量在整个 NGINX 配置中访问。每个 label 都分配有唯一的键和值,其中键只能由字母、数字和下划线组成。重要的是,标签一旦创建便不能重新定义。该指令在 http 上下文中生效,意味着它在配置中定义的 server 或 location 块之间全局适用。分配给标签的值不应包含诸如 & 和 = 的特殊字符,以保持 NGINX 内部变量计算的语法和功能正确。
配置后,定义的标签可以使用变量语法检索,例如 $label_key_name,其中 key_name 对应具体标签的标识符。这使得在配置的各种位置使用变得方便,例如日志、头部或动态响应处理。此外,另一个变量 $labels 将所有已定义的标签聚合为单个字符串,格式为 key1=value1&key2=value2,提供了一种更简单的方式在响应中包含所有相关信息。在底层,标签存储由哈希表管理,可以通过额外的指令对其配置进行微调,以在必要时优化性能。
配置示例
http {
label environment production;
label cluster_id my_cluster_id;
label server_region us-east-1;
label server_id my_server_id;
server {
listen 80;
server_name example.com;
location / {
add_header Server-Id $label_server_id;
add_header Cluster-Id $label_cluster_id;
add_header All-Labels $labels;
return 204;
}
}
}⚠
标签的值不能包含像 '&' 和 '=' 这样的特殊字符。
⚠
相同的键不能被定义多次;这样会在配置解析时导致错误。
⚠
标签键必须以字母开头,并且只能包含字母、数字和下划线。