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包實現,有關更多信息,請參閱其文檔。函數


上一篇:調試

相關文章
相關標籤/搜索