port_in_redirect

指令 `port_in_redirect` 控制 NGINX 生成的重定向中是否包含请求的端口号。 — NGINX HTTP Core

port_in_redirect
httpserverlocation
语法port_in_redirect on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数flag

说明

指令 `port_in_redirect` 用于确定 NGINX 在生成的重定向响应中如何处理端口号。将该指令设置为 `on` 时,如果服务器监听的是非常规端口,NGINX 会在其生成的重定向响应的 Location 头中包含端口号。 当 Web 服务器未在默认的 HTTP (80) 或 HTTPS (443) 端口上运行时,这对于准确引导客户端到正确的主机和端口尤其有用。相反,设置为 `off` 时,重定向 URL 中会省略端口号,这意味着客户端在跟随重定向时可能会采用默认端口。 在实际应用中,对于配置为使用非默认端口的服务,该指令可能是确保客户端获得正确重定向的关键;未包含端口号可能导致混淆或请求失败。该指令可在 `http`、`server` 和 `location` 上下文中使用,便于根据特定服务器或路径需求进行灵活配置。调整 `port_in_redirect` 设置有助于解决因复杂服务器设置(在不同端口上运行多个服务)而产生的歧义。

配置示例

server {
    listen 8080;
    port_in_redirect on;
    location / {
        return 301 http://example.com;
    }
}

使用此指令而不了解省略端口的含义,可能导致跟随重定向的客户端出现意外行为。

如果你的服务器运行在默认端口上,将此指令设置为 `on` 可能在响应中不必要地暴露端口。

在与 HTTPS 配置及非标准端口混合使用时要小心。