¥Express behind proxies
在反向代理后面运行 Express 应用时,某些 Express API 可能返回与预期不同的值。为了对此进行调整,trust proxy
应用设置可用于公开由 Express API 中的反向代理提供的信息。最常见的问题是公开客户端 IP 地址的 express API 可能会显示反向代理的内部 IP 地址。
¥When running an Express app behind a reverse proxy, some of the Express APIs may return different values than expected. In order to adjust for this, the trust proxy
application setting may be used to expose information provided by the reverse proxy in the Express APIs. The most common issue is express APIs that expose the client’s IP address may instead show an internal IP address of the reverse proxy.
配置 trust proxy
设置时,了解反向代理的确切设置非常重要。由于此设置将信任请求中提供的值,因此 Express 中的设置组合与反向代理的运行方式相匹配非常重要。
¥When configuring the trust proxy
setting, it is important to understand the exact setup of the reverse proxy. Since this setting will trust values provided in the request, it is important that the combination of the setting in Express matches how the reverse proxy operates.
应用设置 trust proxy
可以设置为下表中列出的值之一。
¥The application setting trust proxy
may be set to one of the values listed in the following table.
类型 | 值 |
---|---|
布尔值 |
如果是 如果是 设置为 |
IP 地址 |
可信任作为反向代理的 IP 地址、子网或 IP 地址和子网数组。以下列表显示了预配置的子网名称:
你可以通过以下任一方式设置 IP 地址:
指定时,IP 地址或子网将被排除在地址确定过程之外,并将离应用服务器最近的不受信任的 IP 地址确定为客户端的 IP 地址。这通过检查 |
数字 |
使用距 Express 应用最多 使用此设置时,重要的是要确保不存在通往 Express 应用的多个不同长度的路径,以便客户端可以少于配置的跳数,否则客户端可能会提供任何值 。 |
函数 |
自定义信任实现。
|
启用 trust proxy
将产生以下影响:
¥Enabling trust proxy
will have the following impact:
req.hostname 的值源自 X-Forwarded-Host
标头中设置的值,该值可以由客户端或代理设置。
¥The value of req.hostname is derived from the value set in the X-Forwarded-Host
header, which can be set by the client or by the proxy.</li>
反向代理可以设置 X-Forwarded-Proto
来告诉应用它是 https
还是 http
,甚至是无效的名称。该值由 req.protocol 反映。
¥X-Forwarded-Proto
can be set by the reverse proxy to tell the app whether it is https
or http
or even an invalid name. This value is reflected by req.protocol.</li>
req.ip 和 req.ips 值是根据套接字地址和 X-Forwarded-For
标头填充的,从第一个不受信任的地址开始。
¥The req.ip and req.ips values are populated based on the socket address and X-Forwarded-For
header, starting at the first untrusted address.</li>
</ul>
trust proxy
设置是使用 proxy-addr 包实现的。有关更多信息,请参阅其文档。
¥The trust proxy
setting is implemented using the proxy-addr package. For more information, see its documentation.