$is_request_port

变量 $is_request_port 指示请求是否是在非默认协议端口上发起的。 — NGINX Core (HTTP)

$is_request_port NGINX Core (HTTP)

说明

`$is_request_port` 变量用于确定传入的 HTTP 请求是否是在非标准端口上发起的,从而允许服务器区分在标准端口(HTTP 的 80 端口和 HTTPS 的 443 端口)上发起的请求与在其它端口上发起的请求。该变量在请求处理阶段进行求值,具体是在请求被解析时且到达任何处理器之前。 当该变量被设置时,如果请求是在一个备用端口上发起的,则其值为 '1';如果请求是在标准的 HTTP 或 HTTPS 端口上发起的,则其值为 '0'。这在需要根据请求来源端口应用特定配置、日志记录或访问规则的场景中尤其有用。该变量由 NGINX 根据传入请求的套接字信息自动初始化,无需手动配置。 开发者通常将此变量与访问控制指令或条件块结合使用,以根据请求是发往标准端口还是非标准端口来提供定制响应或日志记录,从而加强针对客户端请求的服务器行为控制。

配置示例

server {
    listen 8080;
    location / {
        if ($is_request_port) {
            return 403;  # Deny access from non-standard ports
        }
        # Other configurations...
    }
}

子系统

http

可缓存

上下文

http, server, location, if

确保在使用此变量时,您设置的重写规则或访问控制不会无意中阻止合法流量。

注意,该变量仅根据端口计算为 1 或 0;它不会提供实际的端口号。