安裝Fikker 快取自建CDN加速,因為前幾天一直忙著修改網站主題,趁現在趕緊把這個自建CDN的工具分享出來。仔細研究了一下官​​網的介紹,發現Fikker安裝方便,使用簡單,是自己搭建CDN的好軟體。 根據官網的說法,Fikker 是一款面向CDN/站長的專業級網站快取(Webcache)和反向代#理伺服器軟體(Reversed Proxy Server),可以實現的功能有反向代#理+ 頁面快取+即時監控+ 流量統計+ 轉向管理+ HTTPS + 防CC攻擊。 不過看了一下免費版本的Fikker,看起來像頁面快取這項功能是沒有的,所以免費版本只能用來給圖片、JS、CSS等靜態資源作CDN加速。 Fikker還有一個主控系統,利用它可以將多個Fikker快取節點進行統一管理,組成成一個全新的CDN快取系統。 利用Fikker自建CDN-支援Https,頁面快取,即時監控,流量統計,防CC攻擊 更多的關於網站架設軟體和程式的選擇,你可以看看:

  1. LNMP:OneinStack一鍵安裝腳本-輕鬆部署Let’s Encrypt憑證設定Https站點
  2. 以JW Player,ckplayer,Smartideo搭建視訊直播站-支援各大視訊網站及rtmp
  3. Linux VPS建置工具LNMP 1.4安裝與使用-SSL自動配置續期和多版本PHP支持
PS:2017年11月17日更新,著名的CDN服務商Cloudflare推出了合作分銷計劃,你也可加入到Cloudflare Partner來為大家提供免費CDN服務了:加入Cloudflare Partner免費提供CloudFlare CDN加速服務-無需修改NS支援SSL。

一、Fikker安裝方法

Fikker官網:https://www.fikker.com,由廣州市非客網絡科技有限公司,創立於2010年。 安裝準備:Fikker需要監聽80/443/6780端口,若您的伺服器已經安裝過Nginx/Apache等服務,需要先停用,推薦使用一台全新的VPS進行安裝。
#安装wget,若已经安装这一步可省略
yum -y install wget 
#下载安装包
wget -c http://www.fikker.com/dl/fikkerd-3.7.3-linux-x86-64.tar.gz
#解压
tar zxvf fikkerd-3.7.3-linux-x86-64.tar.gz
#进入安装目录
cd fikkerd-3.7.3-linux-x86-64
#运行Fikker
./fikkerd.sh start
開始安裝:依序複製下面的指令(需要root使用者)執行,注意:適用於CentOS 6.x/7.x 等作業系統 64 位元版本,對 CPU 無要求,記憶體 4GB 以上。 上面已經提到,Fikker監聽80/443/6780端口,請注意在防火牆放行端口,輸入下面的命令:
#如果防火墙使用的iptables(Centos 6)
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 6780 -j ACCEPT
service iptables save
service iptables restart
#如果使用的是firewall(CentOS 7)
firewall-cmd --zone=public --add-port=80/tcp --permanent 
firewall-cmd --zone=public --add-port=443/tcp --permanent 
firewall-cmd --zone=public --add-port=6780/tcp --permanent 
firewall-cmd --reload
完成後造訪http://IP:6780,初始密碼為123456,若打不開,請輸入指令netstat -apn|grep ‘6780’查看連接埠是否監聽,檢查防火牆是否放行埠。 設定來源站:新增主機後,還需要設定回來源位址,告知CDN節點從哪裡取得數據,來源站新增完畢後大功告成,您可以將DNS解析至CDN節點了。 (點擊放大) 其它操作:如果您需要將Fikker註冊為服務,請執行下面的命令:
#注册服务
./fikkerd.sh install
#停止服务
./fikkerd.sh stop
#删除服务
./fikkerd.sh uninstall

三、自建CDN系統

第一步:先安裝 Fikker 快取(支援 Linux/Windows 系統) 。將 Fikker 快取安裝在一個或多個快取節點伺服器上,用於快取加速/反向代#理等。 第二步:再安裝 Fikker CDN 主控。用於管理多個快取節點,用於同步各節點的配置/網域流量統計/使用者管理/套餐管理等。註:選用安裝項,節點很少時,可以不用主控。 (點擊放大) 第三步:最後利用第三方智慧解析(例如 Cloudxns/DNSpod/51DNS/DNSla 等) 。利用第三方智慧解析,將網站的網域以輪詢/分地區/分線路的方式,分別解析到各個快取節點伺服器IP上即可。註:不要解析到主控IP。

四、總結

Fikker CDN可以很方便的搭建自己的CDN服務,並且支援HTTP/HTTPS,但是Fikker佔用了80/443,導致無法和自己的WEB服務共存。如果您不想折騰還是老實實用第三方CDN吧。 啟用了CDN後你會發現你的程式取得到的用戶的IP都變成了快取節點的IP了。想要取得到使用者的真實IP,請參考以下程式碼進行對應的調整。
#php 获得用户真实 IP 代码举例:
function getRemoteIP()
{
    if (!isset($_SERVER["HTTP_X_FORWARDED_FOR"])) /* 存在 X-Forwarded-For 吗? */ 
    {
        return $_SERVER["REMOTE_ADDR"]; /* 兼容已有程序 */
    }
    
    return $_SERVER["HTTP_X_FORWARDED_FOR"]; /* 返回用户真实 IP, 如为多个 IP 时, 则取第一个 */
}

#asp.net 获得用户真实 IP 代码举例:
void getRemoteIP() 
{ 
    string SourceIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; /* 存在 X-Forwarded-For 吗? */
    if (string.IsNullOrEmpty(SourceIP)) 
    {
        SourceIP = Request.ServerVariables["REMOTE_ADDR"]; /* 兼容已有程序 */
    }
    
    Response.Write(SourceIP); /* 返回用户真实 IP, 如为多个 IP 时, 则取第一个 */
}

#asp 获得用户真实 IP 代码举例:
 0 Then 
strIPAddr = Request.ServerVariables("REMOTE_ADDR") 
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then 
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1) 
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then 
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1) 
Else 
strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
End If 
getIP = Trim(Mid(strIPAddr, 1, 30)) 
End Function

ip=getRemoteIP()
response.write(ip)
%>

發表評論