internal

internal 指令将某个 location 标记为仅可从 NGINX 内部访问,阻止外部客户端直接访问该 location。 — NGINX HTTP Core

internal
location
语法internal;
默认值none
上下文location
模块NGINX HTTP Core
参数none

说明

`internal` 指令在 NGINX 的 location 块中使用,用来指定该 location 只能由 NGINX 本身在内部访问,而不能被外部客户端访问。这在保护某些不应被用户直接访问的资源或路由时尤其有用,例如可能处理敏感数据的后端脚本或内部 API。当外部来源发起对内部 location 的请求时,NGINX 会返回 404 Not Found 错误,从而有效阻止未授权的访问。 当 `internal` 指令被应用到某个 location 块时,任何来自客户端直接访问该块的尝试都会返回错误响应,从而保持应用的完整性和安全性。这种行为有助于高效地构建应用,使某些路径可专门用于内部重定向、链接或对终端用户“隐藏”的 location,并且可以与诸如 `rewrite` 或 `error_page` 等其他指令结合使用,以控制在尝试未授权访问时的处理方式。 该指令不接受任何参数,体现了其开/关式的功能(声明时即启用)。因此它可以无缝地融入典型的 NGINX 配置范式,在该范式中各个块可根据用途和功能被清晰划分。正确使用该指令可以显著提升在 NGINX 中托管的应用的安全性,确保只有预期的服务器间通信通过受控端点进行。

配置示例

location /private {
    internal;
    # additional configurations
}

将 internal 指令放在嵌套的 location 中可能导致意外行为;请确保在正确的逻辑上下文中使用它。

请记住,所有 internal requests 都需要通过已配置的 error pages 或 redirects 进行路由,以向用户提供反馈。