Express 設(shè)置代理

2018-09-22 11:31 更新

為 Express 設(shè)置代理

當(dāng)在代理服務(wù)器之后運行 Express 時,請將應(yīng)用變量 trust proxy 設(shè)置(使用 app.set())為下述列表中的一項。

如果沒有設(shè)置應(yīng)用變量 trust proxy,應(yīng)用將不會運行,除非 trust proxy 設(shè)置正確,否則應(yīng)用會誤將代理服務(wù)器的 IP 地址注冊為客戶端 IP 地址。

類型
Boolean

如果為 true,客戶端 IP 地址為 X-Forwarded-* 頭最左邊的項。

如果為 false, 應(yīng)用直接面向互聯(lián)網(wǎng),客戶端 IP 地址從 req.connection.remoteAddress 得來,這是默認(rèn)的設(shè)置。

IP 地址

IP 地址、子網(wǎng)或 IP 地址數(shù)組和可信的子網(wǎng)。下面是預(yù)配置的子網(wǎng)列表。

  • 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

使用如下方式設(shè)置 IP 地址:

app.set('trust proxy', 'loopback') // 指定唯一子網(wǎng)
app.set('trust proxy', 'loopback, 123.123.123.123') // 指定子網(wǎng)和 IP 地址
app.set('trust proxy', 'loopback, linklocal, uniquelocal') // 指定多個子網(wǎng)
app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']) // 使用數(shù)組指定多個子網(wǎng)

當(dāng)指定地址時,IP 地址或子網(wǎng)從地址確定過程中被除去,離應(yīng)用服務(wù)器最近的非受信 IP 地址被當(dāng)作客戶端 IP 地址。

Number

將代理服務(wù)器前第 n 跳當(dāng)作客戶端。

Function

定制實現(xiàn),只有在您知道自己在干什么時才能這樣做。

app.set('trust proxy', function (ip) {
  if (ip === '127.0.0.1' || ip === '123.123.123.123') return true; // 受信的 IP 地址
  else return false;
})

設(shè)置 trust proxy 為非假值會帶來兩個重要變化:

  • 反向代理可能設(shè)置 X-Forwarded-Proto 來告訴應(yīng)用使用 https 或簡單的 http 協(xié)議。請參考 req.protocol。

  • req.ipreq.ips 的值將會由 X-Forwarded-For 中列出的 IP 地址構(gòu)成。

trust proxy 設(shè)置由 proxy-addr 軟件包實現(xiàn),請參考其文檔了解更多信息。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號