物理服务器名称的Nginx变量

时间:2014-07-23 15:47:51

标签: nginx

我尝试在单独的网络服务器上设置响应标头,输出运行nginx的计算机的物理名称,以便我可以告诉哪些服务器正在为我们的网络客户端提供响应。

是否存在可以执行此操作的变量?或者我只需要为每台服务器进行硬编码:(

3 个答案:

答案 0 :(得分:1)

你在$hostname公共变量之后。公共变量列在variable index中。

nginx access log documentation仅显示特定于访问日志的变量:

  

日志格式可以包含公共变量和存在的变量   仅在日志写入时。

答案 1 :(得分:-1)

起初我认为答案是使用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的错误,但你已被警告 - 在perl_set中使用反引号可能是致命的。

答案 2 :(得分:-2)

我猜你正在寻找$hostname变量。