非常教程

Express参考手册

指南 | Guide

7.在代理后面表达 | 7. Express behind proxies

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

虽然如果未设置应用程序变量trust proxy,应用程序将无法运行,但如果未配置trust proxy,它将错误地将代理的IP地址注册为客户端IP地址。

类型

布尔

如果为true,则将客户端的IP地址理解为X-Forwarded- *标头中最左边的条目。如果为false,则应用程序被理解为直接面向Internet,并且客户端的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')//指定一个子网app.set('trust proxy ','loopback,123.123.123.123')//指定一个子网和一个地址app.set('trust proxy','loopback,linklocal,uniquelocal')//指定多个子网为CSV app.set('trust proxy' ,'loopback','linklocal','uniquelocal')//将多个子网指定为数组如果指定了IP地址或子网,则将从地址确定过程中排除IP地址或子网,

信任从面向前代理服务器作为客户端的第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})

  • loopback - 127.0.0.1/8, ::1/128
  • linklocal - 169.254.0.0/16fe80::/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')//指定一个子网app.set('trust proxy','loopback,123.123.123.123')//指定一个子网和一个地址app.set('trust代理','loopback,linklocal,uniquelocal')//指定多个子网为CSV app.set('trust proxy','loopback','linklocal','uniquelocal')//指定多个子网作为数组

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

Number  Trust the `n`th hop from the front-facing proxy server as the client.
Function  Custom trust implementation. Use this only if you know what you are doing.

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中的值导出标头,可以由客户端或由代理来设置。
  • X-Forwarded-Proto可以通过反向代理设置,告诉应用程序是否是https或者http甚至是无效的名称。该值由req.protocol反映。
  • req.ip和req.ips值从列表X-Forwarded-For中填入地址。

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

Express

Express 是一个简洁而灵活的 node.js Web 应用框架, 提供一系列强大特性帮助你创建各种 Web 应用。Express 不对 node.js 已有的特性进行二次抽象,只是在它之上扩展了 Web 应用所需的功能。丰富的 HTTP 工具以及来自 Connect 框架的中间件随取随用,创建强健、友好的 API 变得快速又简单。

主页 http://expressjs.com/
源码 https://github.com/strongloop/express/
发布版本 4.16.1

Express目录

1.开始 | Getting started
2.指南 | Guide
3.高级主题 | Advanced topics
4.API