Nginx log_format 被忽略

Nginx log_format 被忽略

我需要有关 Nginx 中 log_format 函数的一些帮助。我使用 if 语句(是的,我知道 if 很邪恶)根据参数值选择上游池,但结果并不理想。我真的需要记录使用的上游服务器 - 哎呀,如果我可以记录 $pool 变量,那就太好了。

无论我尝试什么或将 log_format 放在哪里,它仍然以默认的“组合”格式记录。我查看了启动 nginx 时包含的所有配置文件,发现 log_format 仅在一个地方定义。

有什么想法吗?以下是我的配置的相关部分:

nginx.conf/http 上下文:

   log_format auditing '$remote_addr - $remote_user [$time_local] '
                ' "$host" "$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent" $proxy_host '
                ' $upstream_addr $http_soapaction';

    map $request $loggable
    {
            ~*app_ping\.d911 0;
            default 1;
    }


    access_log /var/log/nginx/access.log auditing; #combined if=$loggable
    error_log /var/log/nginx/error.log debug;

已启用站点/特定于站点/服务器上下文:

    access_log /var/log/nginx/producttest.log auditing;

set $pool "def-pool-443";    ### Set the default pool (will be TAS pool in prod)

            ### Modify target pool depending on criteria match
            if ($args ~* 'device_type=bot')
                    {
                    set $pool "bot-pool-443";
                    }
    ...

    location /
            {
            access_log /var/log/nginx/productest-location.log auditing;
            proxy_pass https://$pool;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_next_upstream error timeout invalid_header http_500;
    proxy_connect_timeout 2;
            }

答案1

好的,经过几天的苦思冥想,我终于回答了我自己的问题,并对其进行了格式化以便发布。

我按照网上的示例设置了 log_format 的格式,但结果发现它不喜欢用于换行的单刻度。我把那些去掉,然后把它们全部放在一行上,然后就好了。

无论如何,希望这能帮助其他遵循同样示例的人。

相关内容