- ipng_stats_logtail now accepts an optional if=$variable parameter that suppresses log lines when the variable is empty or "0", following the same semantics as nginx's access_log if=. The condition is checked before format rendering for zero overhead on filtered requests. Filtered requests are still counted by stats. - Log format examples updated to include $scheme for http/https visibility, and renamed to ipng_stats_logtail to match production. - Robot test added for the if= filter (19 tests, 19 pass). - FR-8.5 added to design doc for the if= semantics.
64 lines
1.8 KiB
Nginx Configuration File
64 lines
1.8 KiB
Nginx Configuration File
# SPDX-License-Identifier: Apache-2.0
|
|
# Test nginx configuration for the ipng_stats module.
|
|
|
|
load_module /usr/lib/nginx/modules/ngx_http_ipng_stats_module.so;
|
|
|
|
error_log stderr notice;
|
|
|
|
events {
|
|
worker_connections 128;
|
|
}
|
|
|
|
http {
|
|
ipng_stats_zone ipng:1m;
|
|
ipng_stats_flush_interval 500ms;
|
|
ipng_stats_default_source direct;
|
|
|
|
log_format tagged '$remote_addr src=$ipng_source_tag vip=$server_addr '
|
|
'"$request" $status $body_bytes_sent';
|
|
access_log /var/log/nginx/access.log tagged;
|
|
|
|
# Global logtail — fires for ALL requests regardless of server block.
|
|
# The if= condition suppresses /notfound from the logtail stream.
|
|
map $request_uri $logtail_enabled {
|
|
~^/notfound 0;
|
|
default 1;
|
|
}
|
|
log_format ipng_stats_logtail '$host\t$remote_addr\t$request_method\t$request_uri\t'
|
|
'$status\t$body_bytes_sent\t'
|
|
'$ipng_source_tag\t$server_addr\t$scheme';
|
|
ipng_stats_logtail ipng_stats_logtail udp://127.0.0.1:9514 buffer=4k flush=500ms if=$logtail_enabled;
|
|
|
|
server {
|
|
# Mgmt-only listener for direct traffic (tagged "direct").
|
|
listen 172.20.40.2:8080;
|
|
|
|
# Per-interface listeners for attributed traffic.
|
|
listen 10.0.1.1:8080 device=eth1 ipng_source_tag=cl1;
|
|
listen 10.0.2.1:8080 device=eth2 ipng_source_tag=cl2;
|
|
|
|
server_name _;
|
|
|
|
location / {
|
|
return 200 "ok $server_addr\n";
|
|
}
|
|
|
|
location /notfound {
|
|
return 404 "nope\n";
|
|
}
|
|
|
|
location /slow {
|
|
proxy_pass http://127.0.0.1:29080/;
|
|
}
|
|
}
|
|
|
|
server {
|
|
listen 172.20.40.2:9113;
|
|
|
|
location = /.well-known/ipng/statsz {
|
|
ipng_stats;
|
|
allow all;
|
|
}
|
|
}
|
|
}
|