新聞中心
怎么查詢使用CDN后Discuz論壇網(wǎng)站真實(shí)IP地址的方法
使用了國外的空間的站長經(jīng)常會苦惱空間訪問速度慢,DNS解析反應(yīng)慢的問題。為了解決這些問題,最好的辦法就是使用CDN,加快博客和網(wǎng)站從國內(nèi)的訪問速度,提高用戶體驗(yàn)度。無憂(www.gle-technology.com)小編發(fā)現(xiàn)最近有客戶說使用了加速樂等CDN產(chǎn)品之后無法獲得客戶的真實(shí)IP,這種情況在無憂小編找了很久之后才發(fā)現(xiàn)問題的解決方法,而且適合DZ使用任何一種CDN產(chǎn)品之后照成的這種情況。 首先說手該問題導(dǎo)致的結(jié)果: 1.Discuz論壇可能無法獲得用戶的真實(shí)IP,導(dǎo)致某些用戶IP顯示的是CDN產(chǎn)品節(jié)點(diǎn)的IP 2.論壇訪問量過大的話,可能會導(dǎo)致用戶訪問時(shí)提示“抱歉,您的?IP?地址不在被允許,或您的賬號被禁用,無法訪問本站點(diǎn)” 接下來談?wù)劗a(chǎn)生原因: 使用CDN,對于網(wǎng)站訪客來說,相當(dāng)于使用了代理訪問,而DZ在設(shè)計(jì)上,是優(yōu)先獲取代理IP,其它才會檢測代理服務(wù)器是否將用戶真實(shí)IP傳輸過來,也就是說獲取代理IP優(yōu)先于用戶真實(shí)IP。如果您的網(wǎng)站不需要對用戶訪問做過多的限制,強(qiáng)烈建議按照以下方法進(jìn)行: 第一種(DZ?X2版本):打開DZ,/source/class/class_core.php?文件; 搜索“HTTP_CLIENT_IP”,找到下面這段代碼: function?_get_client_ip()?{ $ip?=?$_SERVER['REMOTE_ADDR']; if?(isset($_SERVER['HTTP_CLIENT_IP'])?&&?preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’,?$_SERVER['HTTP_CLIENT_IP']))?{ $ip?=?$_SERVER['HTTP_CLIENT_IP']; }?elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])?AND?preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s’,?$_SERVER['HTTP_X_FORWARDED_FOR'],?$matches))?{ foreach?($matches[0]?AS?$xip)?{ if?(!preg_match(‘#^(10|172\.16|192\.168)\.#’,?$xip))?{ $ip?=?$xip; break; } } } return?$ip; } 替換成一下代碼: function?_get_client_ip()?{ $ip?=?$_SERVER['REMOTE_ADDR']; if?(isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR'])?&&?preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’,?$_SERVER['HTTP_X_REAL_FORWARDED_FOR']))?{ $ip?=?$_SERVER['HTTP_X_REAL_FORWARDED_FOR']; } elseif?(isset($_SERVER['HTTP_X_FORWARDED_FOR'])?&&?preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’,?$_SERVER['HTTP_X_FORWARDED_FOR']))?{ $ip?=?$_SERVER['HTTP_X_FORWARDED_FOR']; } elseif?(isset($_SERVER['HTTP_CLIENT_IP'])?&&?preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’,?$_SERVER['HTTP_CLIENT_IP']))?{ $ip?=?$_SERVER['HTTP_CLIENT_IP']; } return?$ip; } 第二種(Discuz!?2.5/Discuz!?3.0): private?function?_get_client_ip()?{ $ip?=?$_SERVER['REMOTE_ADDR']; if?(isset($_SERVER['HTTP_CLIENT_IP'])?&&?preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’,?$_SERVER['HTTP_CLIENT_IP']))?{ $ip?=?$_SERVER['HTTP_CLIENT_IP']; }?elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])?AND?preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s’,?$_SERVER['HTTP_X_FORWARDED_FOR'],?$matches))?{ foreach?($matches[0]?AS?$xip)?{ if?(!preg_match(‘#^(10|172\.16|192\.168)\.#’,?$xip))?{ $ip?=?$xip; break; } } } return?$ip; } 替換成一下代碼: private?function?_get_client_ip()?{ $ip?=?$_SERVER['REMOTE_ADDR']; if?(isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR'])?&&?preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’,?$_SERVER['HTTP_X_REAL_FORWARDED_FOR']))?{ $ip?=?$_SERVER['HTTP_X_REAL_FORWARDED_FOR']; } elseif?(isset($_SERVER['HTTP_X_FORWARDED_FOR'])?&&?preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’,?$_SERVER['HTTP_X_FORWARDED_FOR']))?{ $ip?=?$_SERVER['HTTP_X_FORWARDED_FOR']; } elseif?(isset($_SERVER['HTTP_CLIENT_IP'])?&&?preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’,?$_SERVER['HTTP_CLIENT_IP']))?{ $ip?=?$_SERVER['HTTP_CLIENT_IP']; } return?$ip; } 以上操作后,登陸您的CDN加速產(chǎn)品后臺和你的Discuz論壇后臺分別清除緩存即可。 純Linux環(huán)境下高端免備案【香港獨(dú)立IP地址】?php空間,僅僅只需199元一年起。全網(wǎng)最低價(jià)域名感恩廣大新老客戶,首年只要39元。
本文地址:http://www.gle-technology.com/discuz/11675.html