服務(wù)器使用百度云防護(hù)后,一般情況下,網(wǎng)站日志里顯示的請(qǐng)求IP應(yīng)該是百度的回源IP。
但有些用戶有特別需求的,需要識(shí)別真實(shí)訪客的IP怎么辦?
這其實(shí)跟其它CDN識(shí)別真用戶IP沒什么區(qū)別,百度云防護(hù)也采用了HTTP_X_FORWARDED_FOR HTTP 請(qǐng)求頭字段來(lái)獲取真實(shí)訪客IP。
當(dāng)訪客請(qǐng)求通過(guò) 百度云防護(hù)節(jié)點(diǎn)時(shí),百度云防護(hù)節(jié)點(diǎn)會(huì)將客戶端的真實(shí) IP 地址添加到 HTTP_X_FORWARDED_FOR 字段中,然后轉(zhuǎn)發(fā)請(qǐng)求到原始服務(wù)器(源站服務(wù)器)。
我們需要的做的是在網(wǎng)站程序、web服務(wù)器添加獲取HTTP_X_FORWARDED_FOR字段的IP。
如nginx可在配置文件添加:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend-server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
proxy_set_header X-Real-IP $remote_addr;
:將客戶端的真實(shí) IP 地址傳遞給后端服務(wù)器。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
:$proxy_add_x_forwarded_for
是一個(gè)內(nèi)置變量,它會(huì)將客戶端的X-Forwarded-For
和當(dāng)前代理服務(wù)器的 IP 地址合并。如果客戶端請(qǐng)求頭中已經(jīng)存在X-Forwarded-For
,它會(huì)將其附加到新的值中。
具體可根據(jù)自身web服務(wù)器及網(wǎng)站程序語(yǔ)言進(jìn)行調(diào)用,如不懂的可以咨詢下AI,這里我們就不多說(shuō)了。