?
This document uses PHP Chinese website manual Release
在代理后面運(yùn)行Express應(yīng)用程序時(shí),通過使用app.set()將應(yīng)用程序變量trust proxy
設(shè)置為下表中列出的值之一。
雖然如果未設(shè)置應(yīng)用程序變量trust proxy
,應(yīng)用程序?qū)o法運(yùn)行,但如果未配置trust proxy
,它將錯(cuò)誤地將代理的IP地址注冊(cè)為客戶端IP地址。
類型 | 值 |
---|---|
布爾 | 如果為true,則將客戶端的IP地址理解為X-Forwarded- *標(biāo)頭中最左邊的條目。如果為false,則應(yīng)用程序被理解為直接面向Internet,并且客戶端的IP地址來自req.connection.remoteAddress。這是默認(rèn)設(shè)置。 |
IP地址 | IP地址,子網(wǎng)或要信任的IP地址和子網(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')//指定一個(gè)子網(wǎng)app.set('trust proxy ','loopback,123.123.123.123')//指定一個(gè)子網(wǎng)和一個(gè)地址app.set('trust proxy','loopback,linklocal,uniquelocal')//指定多個(gè)子網(wǎng)為CSV app.set('trust proxy' ,'loopback','linklocal','uniquelocal')//將多個(gè)子網(wǎng)指定為數(shù)組如果指定了IP地址或子網(wǎng),則將從地址確定過程中排除IP地址或子網(wǎng), |
數(shù) | 信任從面向前代理服務(wù)器作為客戶端的第n跳。 |
功能 | 自定義信任實(shí)現(xiàn)。只有當(dāng)你知道你在做什么時(shí)才使用它。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/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')//指定一個(gè)子網(wǎng)app.set('trust proxy','loopback,123.123.123.123')//指定一個(gè)子網(wǎng)和一個(gè)地址app.set('trust代理','loopback,linklocal,uniquelocal')//指定多個(gè)子網(wǎng)為CSV app.set('trust proxy','loopback','linklocal','uniquelocal')//指定多個(gè)子網(wǎng)作為數(shù)組
指定時(shí),將從地址確定過程中排除IP地址或子網(wǎng),并將離應(yīng)用程序服務(wù)器最近的不可信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
將會(huì)產(chǎn)生以下影響:
req.hostname的值從集合X-Forwarded-Host
中的值導(dǎo)出標(biāo)頭,可以由客戶端或由代理來設(shè)置。
X-Forwarded-Proto
可以通過反向代理設(shè)置,告訴應(yīng)用程序是否是https
或者http
甚至是無效的名稱。該值由req.protocol反映。
req.ip和req.ips值從列表X-Forwarded-For
中填入地址。
trust proxy
設(shè)置是使用proxy-addr軟件包實(shí)現(xiàn)的。有關(guān)更多信息,請(qǐng)參閱其文檔。