$server_addr

$server_addr 变量返回在 NGINX 配置中指定的服务器的 IP 地址。 — NGINX Core (HTTP)

$server_addr NGINX Core (HTTP)

说明

`$server_addr` 变量是 NGINX Core 模块的一部分,提供响应请求的服务器的实际 IP 地址。该变量在处理请求期间设置,特别是在 TCP/IP 通信的上下文中,使其能够反映客户端所连接的地址。如果服务器有多个 IP 地址或位于负载均衡器后面,`$server_addr` 将表示 NGINX 用于响应传入客户端请求的主地址。 该变量在日志记录或构建响应头时尤其有用。值得注意的是,`$server_addr` 反映请求被处理时的地址,并且在请求被传递给任何 `location` 块或处理器之前就已确定。在 NGINX 运行而没有特定绑定服务器 IP 的场景(例如在 IP 可能会改变的容器化环境中),可能需要对该变量进行适当配置,以确保它始终返回有效地址。通常,它将返回 IPv4 或 IPv6 地址,具体取决于服务器的配置和客户端请求的性质。

配置示例

server {
    listen 80;
    server_name example.com;
    location / {
        add_header X-Server-IP $server_addr;
        # other configurations
    }
}

子系统

http

可缓存

上下文

http, server, location, if

如果 NGINX 部署在反向代理之后,`$server_addr` 可能无法反映原始客户端的 IP,除非使用 `proxy_set_header X-Forwarded-For` 进行正确配置。

在 IPv6 配置中,确保服务器已正确配置以处理 IPv6 地址,以避免意外结果。