对 nginx 流代理的访问未记录在 access_log 文件中

对 nginx 流代理的访问未记录在 access_log 文件中

感谢您检查我的问题。

我正在尝试将用户访问从浏览器记录到 access_log 文件中,但该文件现在不起作用。

我的系统:

[用户]-[TCP 代理]-[Web 服务器]

AWS EC2 中的 nginx/1.6

nginx配置:

load_module '/usr/lib64/nginx/modules/ngx_stream_module.so';
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

stream {
    log_format basic '$remote_addr [$time_local] '
                     '$protocol $status $bytes_sent $bytes_received '
                     '$session_time';
    access_log /var/log/nginx/access.log basic;

    server {
        listen 80;
        proxy_pass web.server.com:80;
    }

    server {
        listen 443;
        proxy_pass web.server.com:443;
    }
}

我使用 Chrome 通过代理服务器从本地笔记本电脑打开了网站,网站打开正常,并且 chrome devtool 显示代理服务器的 ip Headers tab > General > Remote Address field。我从笔记本电脑上检查了 dig,它显示了代理服务器的 ip,甚至代理服务器中的 tcpdump 也显示了良好的日志:sudo tcpdump -nn -A -s1500 -l -i eth0 port 443

(from tcpdump)
23:51:46.944945 IP user_ip.27149 > proxy_ip: length 357
23:51:46.945040 IP proxy_ip.44488 > webserver_ip.443: length 357
23:51:47.026161 IP webserver_ip.443 > proxy_ip.44488: length 364
23:51:47.026245 IP proxy_ip.443 > user_ip.27149: length 364 

但是当我打开代理服务器中的访问日志文件时,没有任何条目。

与 stackoverflow 中的类似问题不同发生某些连接时,不会创建 Nginx 访问日志条目 ,没有初始条目。只是空的。

我最初怀疑是 access_log 配置的问题,但当我从笔记本电脑 curl 相同的 url 时,access_log 文件中突然出现了条目。每次我 curl url 时都会出现。

user_ip [15/Feb/2021:23:21:25 +0000] TCP 200 1291080 3279 356.730
user_ip [15/Feb/2021:23:28:24 +0000] TCP 200 215 568 119.923
user_ip [15/Feb/2021:23:33:24 +0000] TCP 200 5646 643 300.140

我不确定为什么只有 curl 请求被记录到 access_log 文件中。

相关内容