nginx 中的日志重定向

nginx 中的日志重定向

我们使用 nginx 作为反向代理。

我们有一些正在逐步淘汰的旧主机名,我们希望生成对这些旧主机的请求日志,以便我们可以轻松识别仍在使用主机的地方(并且一年后,我们可以确信可以淘汰 DNS 条目等...而不会消除关键的生产依赖关系)。

已退休主机的 nginx 条目返回 301。

我已经向相关处理程序添加了一个 access_log 条目:

server {
    listen 80;
    server_name oldhost.example.com;
    access_log  /var/log/nginx/access-oldhost.log main;
    return 301 $scheme://newhost.example.com$request_uri;
}

这会导致创建 /var/log/nginx/access-oldhost.log 文件 - 但是它是空的,即使我们点击旧 URL 并获取 301。

我已尝试将 access_log 行放在返回之前和之后。

我已将 log_subrequest on; 添加到 nginx.conf 的 http 部分:

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_subrequest  on;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    log_format upstreamlog '[$time_local] - [$request_time ms/$upstream_response_time ms] - $proxy_add_x_forwarded_for <-> $scheme:$server_name [$status] <-> $upstream_addr [$upstream_status] : "$request" $http_referer';

    access_log  /var/log/nginx/access.log upstreamlog;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    
    server_tokens off;

    #gzip  on;

    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;

    include /etc/nginx/conf.d/*.conf;
}

server{} 块位于 conf.d/*.conf 文件之一中。

在打开 log_subrequest 的情况下,我们仍然无法获得日志输出(到我们的主要访问日志或 access-oldhost.log 文件)。

希望有人能指出我做错的地方!

答案1

问题已解决。我的测试触及了错误的端点(令人尴尬的错误)。

让一切正常运行的魔法是log_subrequest on;

相关内容