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

在代理后面运行Express

在代理后面运行Express应用程序时,将(经过使用app.set())应用程序变量trust proxy设置为下面列出的值之一。npm

虽然若是未设置应用程序变量 trust proxy,应用程序不会运行失败,但它将错误地将代理的IP地址注册为客户端IP地址,除非配置了 trust proxy

类型:Boolean

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

类型:IP地址

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

    • loopback — 127.0.0.1/8::1/128
    • linklocal — 169.254.0.0/16fe80::/10
    • uniquelocal — 10.0.0.0/8172.16.0.0/12192.168.0.0/16fc00::/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会产生如下影响:app

  • req.hostname的值派生自X-Forwarded-Host header中设置的值,该值可由客户端或代理设置。
  • 能够经过反向代理设置X-Forwarded-Proto来告诉应用程序它是https仍是http甚至是无效的名称,该值由req.protocol反映。
  • req.ipreq.ips值使用X-Forwarded-For的地址列表填充。

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


上一篇:调试

相关文章
相关标签/搜索