通过 443 流量的 Nginx 后面有哪些日志值可用

通过 443 流量的 Nginx 后面有哪些日志值可用

我有一台 Nginx 服务器接受 443 流量并将该流量不加改变地转发到另一台充当 SSL 终止点的 Nginx 服务器。

我原本希望通过 $realip_remote_addr 值获取原始客户端的 IP 地址(用于日志记录) - 但运气不佳。X-Real-IP 和 X-Forwarded-For 标头也是如此。

是否有一个流程或其他值可供我的 SSL 终止服务器使用,以便更好地保存我的日志?

以下是 Nginx“路由器”配置:

stream {


    log_format  short  '$remote_addr - $realip_remote_addr - [$time_local] '
                  '$status ';

    access_log /var/log/nginx/access.log short;
    error_log /var/log/nginx/error.log;

    map $ssl_preread_server_name $name {
        alpha.example.com alpha_backend;
        beta.example.com  beta_backend;
    }

    upstream alpha_backend {
        server 192.168.11.203:443;
    }

    upstream beta_backend {
        server 192.168.11.201:443;
    }

    server {
        listen 443;
        proxy_pass $name;
        ssl_preread on;
    }
}

以下是 SSL 终止服务器的 Nginx 配置:

server {

    listen 443 ssl;

    root /var/www/alpha.example.com/html;
    index index.html index.htm;

    server_name alpha.example.com www.alpha.example.com;

   ssl_certificate_key /etc/letsencrypt/live/alpha.example.com/privkey.pem;
   ssl_certificate /etc/letsencrypt/live/alpha.example.com/fullchain.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/alpha.example.com/cert.pem;

    location / {
            try_files $uri $uri/ =404;
    }
}

server {

    if ($host = alpha.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;

    server_name alpha.example.com;
    return 301 https://$server_name$request_uri;
    #    return 404; # managed by Certbot
}

我的工作条件是两个 SSL 终止服务器(alpha 和 beta)必须位于单个 IP 地址后面,并且是具有单独日志的独立服务器。

我已阅读有关“流”上下文的文档。“短”log_format 是修剪掉 Nginx 在包含时报告为错误的变量的结果。如果我可以将 $remote_addr 或 $realip_remote_addr 从“路由器”服务器传递到 alpha 和 beta,我会很高兴。其他值就更好了。

相关内容