跳转至

log-var-set: 在访问日志写入之前设置变量

安装

您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:

  • RedHat Enterprise Linux 7, 8, 9 和 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-log-var-set
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-log-var-set

通过在 /etc/nginx/nginx.conf 的顶部添加以下内容来启用模块:

load_module modules/ngx_http_log_var_set_module.so;

本文档描述了 nginx-module-log-var-set v0.1.0,于 2026 年 1 月 6 日发布。


log_format main '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" '
                    '"$log_field1" "$log_field2"';
access_log /spool/logs/nginx-access.log;

server {
    listen 127.0.0.1:80;
    server_name localhost;

    location / {
        log_var_set $log_field1 $upstream_http_custom_header1;
        log_var_set $log_field2 $upstream_http_custom_header2;
        proxy_pass http://example.upstream.com;
    }
}

指令

log_var_set

语法: log_var_set $variable value [if=condition];

默认值: -

上下文: http, server, location

在访问日志写入之前,将请求变量设置为给定值。该值可以包含来自请求或响应的变量,例如 $upstream_http_*。只有在当前级别没有为同一变量定义指令时,这些指令才会从上一个配置级别继承。

GitHub

您可以在 nginx-module-log-var-set 的 GitHub 仓库 中找到有关此模块的其他配置提示和文档。