使用了cdn加速,nginx還能記錄蜘蛛的真實IP嗎?
發現使用CDN加速後,蜘蛛的IP會被一些記錄成一些節點的IP。但這個確實是真的蜘蛛。
如何設置nginx,能確保記錄正確的蜘蛛IP呢?
讓你使用的CDN廠商提供訪問日誌給你,正規的CDN廠商一般都提供的。
類似於X-Forwarded-For等HTTP頭確實可以帶客戶端IP過來,但是那是MISS回源的情況,當在CDN上命中的時候,是不會發HTTP請求到你的後端伺服器的,所以這種情況下後端伺服器根本就沒有日誌產生。
不同地區的搜索引擎爬蟲蜘蛛是不同的。比如網站伺服器在北京,但CDN加速節點在廣東,廣東的蜘蛛就會優先抓取網站,這對網站沒有什麼影響,但會提高搜索引擎蜘蛛抓取效率。
如果CDN的 HTTP 代理協議實現的比較好,在CDN發送的HTTP request header 中可能會有「X-Real-Ip」 或 「X-Forwarded-For」欄位,這個欄位記錄了用戶的真實IP。
X-Forwarded-For (XFF) 是一種HTTP 頭部標準,可以用來識別原始客戶端的真實IP地址。當我們的網站使用CDN後,XFF就可以幫助網站源看到真實的原始IP,而不是加速節點的IP地址了。
如果沒有 XFF 或其他類似技術的幫助,使用了CDN的網站源只能看到CDN節點的IP地址,得不到真實的客戶端IP信息,這樣客戶相當於匿名訪問了。若CDN後端的客戶進行濫用或發布違規信息,我們無法進行排除。
如果客戶請求是要通過代理鏈,最終客戶端IP將總是在左邊的第一個。客戶IP、CDN節點將被連接起來是這樣的:
X-Forwarded-For: client, proxy1, proxy2
為什麼 X-Forwarded-For 十分有用?
因為只要把客戶原始IP提供給網站源伺服器,任何規則可以實現,我們可以用不同方式處理客戶端的IP地址,來達到我們的目的。比如:
- 阻止每秒請求超過一定的閾值的最終用戶IP
- 重定向特殊IP或IP範圍
- 黑名單客戶IP
- XFF 的優勢
很多網站 CMS 插件支持 XFF。例如 WordPress 中的 WordFence 插件可以利用 XFF 進行速率限制。如果 CMS 沒有這種插件,或不太適合您,您仍然可以直接在WEB伺服器上做手腳,例如:
Nginx下結合limit_req_zone :
limit_req_zone $http_x_forwarded_for zone=zone:16m rate=1r/s;
Nginx 重定向某些IP地址:
if ($http_x_forwarded_for = "11.11.11.11") {
rewrite ^ http://otherdomain.com$request_uri;
}
可以讓CDN服務商發過來
推薦閱讀:
※如何分析一個關鍵詞突然熱起來的原因?
※如何避免商品搜索過程中,出現用戶搜索「口紅」,列表出現「進口紅酒」的問題?
※錨文本是什麼?
※seo是什麼啊?
※B2B行業信息網站應該如何做好SEO工作?