我试图在我的单独的web服务器上设置响应头,该服务器输出nginx正在运行的机器的物理名称,这样我就可以知道哪些服务器正在为我们的web客户端提供响应。
是否已经存在一个变量来执行此操作?或者我只需要在每个服务器上硬编码:
发布于 2015-02-04 00:21:50
您需要的是$hostname公共变量。公共变量列在可变指数中。
nginx访问日志文档只显示特定于访问日志的变量:
日志格式可以包含公共变量,以及仅在日志写入时才存在的变量。
发布于 2014-07-24 06:37:51
我想你是在找$hostname变量。
发布于 2014-09-21 06:16:42
起初,我认为答案是使用ENV变量并从其中提取主机名( https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx-conf.html )。但由于某种原因我没能让它起作用。
然而,这就像一种魅力:
perl_set $server_int 'sub { use Sys::Hostname; return hostname; }';
以及示例用法:
add_header 'Server-Int' "$server_int";
只需确保您的nginx是用--with-http_perl_module编译的-只需运行nginx -V来确保。并且安装了Sys::Hostname。
警告:我最初使用hostname在Perl脚本中返回主机名,但是虽然返回了名称,但出于某种原因,它中止了输出的其余部分。我不知道这是否是perl_set的一个bug,但是已经警告过您--在perl_set中使用后退可能是致命的。
https://stackoverflow.com/questions/24915159
复制相似问题