$hostname
$hostname 变量返回在 server block 中指定的服务器主机名。 — NGINX Core (HTTP)
$hostname
NGINX Core (HTTP)
说明
$hostname 变量在处理请求期间被设置,反映了 NGINX 配置中定义的服务器主机名。如果指定了 'server_name' 指令,它会从中获取该值;否则默认使用服务器操作系统的主机名。该变量对需要知道提供请求的主机名称的应用程序特别有用,便于依赖服务器身份的配置。 NGINX 在请求阶段评估 $hostname 变量,这意味着它可以在多种场景中使用,例如日志记录、重定向或基于条件的服务器路由。它根据处理请求的 server block 生成值——如果定义了多个具有不同名称的 server blocks,则允许实现动态配置。如果未指定 'server_name',NGINX 将退回使用系统的主机名,该主机名可通过命令行使用 'hostname' 命令在 Linux 系统上确认。 要有效设置此变量,最好在你的 server blocks 中定义 'server_name' 指令,以确保一致的行为,尤其是在具有多个主机名或虚拟主机的环境中。这种做法可以减少歧义,并确保应用使用与收到的请求关联的正确域名。
配置示例
server {
listen 80;
server_name example.com;
location / {
add_header X-Host $hostname;
}
}子系统
http可缓存
是上下文
http, server, location, if⚠
如果未指定 'server_name',则默认为系统的 hostname,这在多主机配置中可能导致意外的值。
⚠
对系统的 hostname 所做的修改在 NGINX 重启之前不会反映到 NGINX 配置中,这可能在运行时导致不一致。