我想禁用某些特定路径的访问日志记录**,但仍将其代理到另一个容器**。换句话说,“匹配多个位置而不返回/退出”,据我所知这是不可能的。
下面的配置将使nginx取消请求而不输入代理传递位置。
server {
# ...
# do not log requests for /_nuxt/* and /_ipx/*
location ~ ^/(_ipx|_nuxt) {
access_log off;
}
# still proxy these paths
location ~* ^(\/|\/(foo|bar|_nuxt|_ipx)$ {
proxy_pass http://frontend:3000;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $server_name:$server_port;
}
}
除了复制代理配置并将访问日志配置行添加到第二个位置之外,是否有更简洁的方法来实现所需的行为?
server {
# ...
# proxy pass without _nuxt and _ipx
location ~* ^(\/|\/(foo|bar)$ {
proxy_pass http://frontend:3000;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $server_name:$server_port;
}
# access log + proxy pass
location ~ ^/(_ipx|_nuxt) {
access_log off;
proxy_pass http://frontend:3000;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $server_name:$server_port;
}
}
2条答案
按热度按时间flmtquvp1#
你是对的,
location
就像开关盒一样,第一次被击中就断了。也许你可以试试这样的方法:而不是第一个location语句。
sg3maiej2#
access_log指令的语法如下:
access_log路径[格式[缓冲区=大小] [gzip[=级别]] [刷新=时间][如果=条件]];...
...
if参数(1.7.0)启用条件日志记录。如果条件的计算结果为“0”或空字符串,则不会记录请求。在以下示例中,不会记录响应代码为2xx和3xx的请求:
应用于所问问题,这意味着以下配置应可实现预期目标: