我在 RHEL6.x 上设置了 varnsih。虽然 varnish、varnishlog 和 varnishstats 显示正确的数据,但 varnisncsa 即使在未定义任何选项的情况下运行时也不会记录任何数据。我已对所有进程执行 lsofed 并确保它们正在读取正确的 _.vsm 文件。可能发生了什么导致 varnishncsa 给出空白输出?
我的 /etc/sysconfig/varnishncsa 文件如下
#NCSA log format, to be used by HTTP log analyzers
VARNISHNCSA_ENABLED=yes
# Include log entries which result from communication with a backend server.
LOG_BACKEND=no
# Include log entries which result from communication with a client.
LOG_CLIENT=yes
#extra options to varnishncsa
DAEMON_OPTS="$DAEMON_OPTS -F '%{Host}i %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"'"
答案1
您是否使用 Varnish 作为“透明代理”返回(管道)“?
在这种情况下,如果你使用返回(管道)必须将其更改为返回(通过)。
从https://www.varnish-cache.org/docs/2.1/tutorial/vcl.html
经过
当您返回 pass 时,请求和后续响应将传递到后端服务器并从后端服务器传出。它不会被缓存。pass 可以从 vcl_recv 返回
管道
管道也可以从 vcl_recv 返回。管道使客户端和后端连接短路,Varnish 只会待在那里来回移动字节。Varnish 不会查看来回发送的数据 - 因此您的日志将不完整。请注意,HTTP 1.1 客户端可以在同一个连接上发送多个请求,因此您应该指示 Varnish 在实际返回之前添加“Connection: close”标头管道。