我想要让我的 Nginx 负载均衡器将标头中的时间戳发送到上游服务器。
我尝试了这样的事情:
proxy_set_header X-Start-Time $msec;
当然,$msec 是一个日志变量,Nginx 给出错误:
Restarting nginx: [emerg]: unknown "msec" variable
答案1
$msec
确实是一个仅在日志写入期间存在的变量。
最简单的解决方案是使用 Perl 模块构建 Nginx 并定义一个由 Perl 子程序支持的变量:
# at 'http' context
perl_set $unix_timestamp 'sub {
time();
}';
# where you want it:
proxy_set_header X-Start-Time $unix_timestamp;
答案2
$time_iso8601 对机器和人类都友好。
答案3
和ngx_http_ssi_模块可以使用嵌入的变量$date_gmt
。因此
proxy_set_header X-Start-Time $date_gmt;