乐趣区

Express 文档(在代理后面运行Express)

在代理后面运行 Express
在代理后面运行 Express 应用程序时,将(通过使用 app.set())应用程序变量 trust proxy 设置为下面列出的值之一。
虽然如果未设置应用程序变量 trust proxy,应用程序不会运行失败,但它将错误地将代理的 IP 地址注册为客户端 IP 地址,除非配置了 trust proxy。
类型:Boolean

如果为 true,则客户端的 IP 地址被理解为 X -Forwarded-*header 中最左侧的条目。
如果为 false,则应用程序理解为直接面向互联网,客户端的 IP 地址来自 req.connection.remoteAddress,这是默认设置。

类型:IP 地址

要信任的 IP 地址、子网或 IP 地址和子网的数组,以下列表显示了预配置的子网名称:

loopback — 127.0.0.1/8、::1/128

linklocal — 169.254.0.0/16、fe80::/10

uniquelocal — 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、fc00::/7

你可以通过以下任何方式设置 IP 地址:
app.set(‘trust proxy’, ‘loopback’) // specify a single subnet
app.set(‘trust proxy’, ‘loopback, 123.123.123.123’) // specify a subnet and
an address
app.set(‘trust proxy’, ‘loopback, linklocal, uniquelocal’) // specify
multiple subnets as CSV
app.set(‘trust proxy’, [‘loopback’, ‘linklocal’, ‘uniquelocal’]) // specify
multiple subnets as an array

指定后,IP 地址或子网将从地址确定过程中排除,并将离应用服务器最近的不可信 IP 地址确定为客户机的 IP 地址。

类型:Number
信任来自前置代理服务器的第 n 跳作为客户端。
类型:函数

定制信任实现,只有在你知道自己在做什么的情况下才能使用它。
app.set(‘trust proxy’, function (ip) {
if (ip === ‘127.0.0.1’ || ip === ‘123.123.123.123’) return true // trusted IPs
else return false
})

启用 trust proxy 会产生以下影响:

req.hostname 的值派生自 X -Forwarded-Host header 中设置的值,该值可由客户端或代理设置。
可以通过反向代理设置 X -Forwarded-Proto 来告诉应用程序它是 https 还是 http 甚至是无效的名称,该值由 req.protocol 反映。

req.ip 和 req.ips 值使用 X -Forwarded-For 的地址列表填充。

trust proxy 设置使用 proxy-addr 包实现,有关更多信息,请参阅其文档。

上一篇:调试

退出移动版