安裝Fikker 快取自建CDN加速,因為前幾天一直忙著修改網站主題,趁現在趕緊把這個自建CDN的工具分享出來。仔細研究了一下官網的介紹,發現Fikker安裝方便,使用簡單,是自己搭建CDN的好軟體。 根據官網的說法,Fikker 是一款面向CDN/站長的專業級網站快取(Webcache)和反向代#理伺服器軟體(Reversed Proxy Server),可以實現的功能有反向代#理+ 頁面快取+即時監控+ 流量統計+ 轉向管理+ HTTPS + 防CC攻擊。 不過看了一下免費版本的Fikker,看起來像頁面快取這項功能是沒有的,所以免費版本只能用來給圖片、JS、CSS等靜態資源作CDN加速。 Fikker還有一個主控系統,利用它可以將多個Fikker快取節點進行統一管理,組成成一個全新的CDN快取系統。 更多的關於網站架設軟體和程式的選擇,你可以看看:
- LNMP:OneinStack一鍵安裝腳本-輕鬆部署Let’s Encrypt憑證設定Https站點
- 以JW Player,ckplayer,Smartideo搭建視訊直播站-支援各大視訊網站及rtmp
- Linux VPS建置工具LNMP 1.4安裝與使用-SSL自動配置續期和多版本PHP支持
一、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)
%>