$server_port
$server_port 变量返回接收当前请求的端口号。 — NGINX Core (HTTP)
$server_port
NGINX Core (HTTP)
说明
$server_port 变量在 NGINX 中会在请求处理过程中动态设置,用于表示服务器监听传入连接的端口。它在配置可能根据端口号而变化的响应时特别有用,例如启用特定的响应头或应用防火墙规则。该变量同时考虑配置中指定的端口和客户端用来发起请求的端口,在多端口设置中提供了清晰的指示。 通常当在 NGINX 配置文件中定义 server block 时会设置该变量。例如,如果某个 server block 配置为监听端口 80,则任何到达该端口的请求都会将 $server_port 变量设为 80。相反,如果 server block 监听的是诸如 443(通常用于 HTTPS)这样的备用端口,变量将反映该值。正因为如此,$server_port 在构建需要区分例如 HTTP 和 HTTPS 流量的配置时是不可或缺的,同时在管理能够运行在非标准端口的应用时也很有用。 $server_port 的典型取值包括 HTTP 的 80、HTTPS 的 443,或任何其他用户定义的端口。该变量不包含协议(HTTP/HTTPS),只关注端口号本身,从而为各种服务器配置提供了灵活性和精确性。
配置示例
server {
listen 80;
server_name example.com;
location / {
add_header X-Server-Port "$server_port";
}
}子系统
http可缓存
是上下文
http, server, location, if⚠
请注意,$server_port 的值是在运行时确定的,因此如果在代理或重定向操作期间使用了不同的端口,它可能与配置的 listen 端口不同。
⚠
如果 NGINX 位于会更改端口的负载均衡器或代理之后,$server_port 将反映 NGINX 接收请求时的端口,而不是面向外部的端口。