【发布时间】:2015-02-06 09:30:21
【问题描述】:
我正在尝试在我的单独网络服务器上设置响应标头,以输出运行 nginx 的机器的物理名称,以便我可以知道哪些服务器正在为我们的网络客户端提供响应。
是否已经存在一个变量来执行此操作?还是我只需要在每个服务器上对其进行硬编码:(
【问题讨论】:
标签: nginx
我正在尝试在我的单独网络服务器上设置响应标头,以输出运行 nginx 的机器的物理名称,以便我可以知道哪些服务器正在为我们的网络客户端提供响应。
是否已经存在一个变量来执行此操作?还是我只需要在每个服务器上对其进行硬编码:(
【问题讨论】:
标签: nginx
您在使用 $hostname 通用变量。常用变量在variable index 中列出。
nginx access log documentation 仅显示特定于访问日志的变量:
日志格式可以包含公共变量,以及存在的变量 仅在日志写入时。
【讨论】:
我猜你正在寻找$hostname 变量。
【讨论】:
起初我认为答案是使用 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 中使用反引号可能是致命的。
【讨论】: