前面寫了幾篇與CDN相關的博客:CloudFlare、百度雲加速、Drupal,還有我們的MediaWiki網站也嘗試接入了CDN,所以也來記錄一下。
首頁,MediaWiki官方網站上這篇說明:Manual:CloudFlare是必須看的,全面介紹了MediaWiki接入CloudFlare需要注意的事項,包括優點和限制、安裝和配置、匿名用戶真實IP、緩存清理、參考資料鍊接等。
我們發現的一些問題和處理辦法:
1、LocalSettings.php中的修改:
MediaWiki 1.2 至 1.34之前的版本:
$wgUseSquid = true; $wgSquidMaxage = 86400; $wgSquidServers = array(//百度雲加速部分IP段 '59.51.81.128-191', '61.182.137.0/25', '42.236.93.0/24', '58.211.2.0/24', '117.34.13.0/24', '112.25.90.0/24', '119.188.9.0/24', '115.231.186.0/25', '125.39.239.0/24', '113.207.101.0/25', '111.32.135.0/25', '183.61.177.0/24', '183.61.236.0/24', '42.81.6.0/25', '220.170.185.160/27', '157.255.24.160/27', '122.190.2.160/27', ); $wgSquidServersNoPurge = array('127.0.0.1');
1.34之後的版本:
$wgUseCdn = true; $wgCdnMaxAge = 86400; $wgCdnServersNoPurge = array(//百度雲加速部分IP段 '59.51.81.128-191', '61.182.137.0/25', '42.236.93.0/24', '58.211.2.0/24', '117.34.13.0/24', '112.25.90.0/24', '119.188.9.0/24', '115.231.186.0/25', '125.39.239.0/24', '113.207.101.0/25', '111.32.135.0/25', '183.61.177.0/24', '183.61.236.0/24', '42.81.6.0/25', '220.170.185.160/27', '157.255.24.160/27', '122.190.2.160/27', );
2、用戶真實IP,我們先是通過修改LocalSettings.php,加入對$_SERVER中傳值的判斷:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR']; }
這個辦法可以實現獲取真實IP,但有安全隐患,也不是很規範,後來嘗試在Apache安裝mod_cloudflare後就可以不用這樣設置了,但這個模塊對其它CDN(例如百度雲加速)無效,就改為了在Apache安裝mod_remoteip(Apache 2.4是直接啟用mod_remoteip,我們現在的Apache 2.2是下載mod_remoteip-httpd22安裝)
3、html頁面不緩存的問題:
在百度雲加速中設置了規則來緩存HTML頁面卻發現無效,百度雲加速對于Cache-Control中的no-cache, private, max-age=0等标簽是遵守的,所以不緩存。
我們在CloudFlare中設置了規則來緩存HTML頁面,就發現可以生效,很可能是因為默認情況下,規則中的“源站控制緩存設置”是關閉了,CloudFlare的設置覆蓋了源站緩存設置。
要想讓百度雲加速也緩存html,我們嘗試了一個不規範但可以馬上有效的辦法:修改includes/OutputPage.php,替換掉原來的private等設置就可以,以後也許還會嘗試出來更規範、合理的辦法。
4、編輯不影響用戶浏覽:
我們采用了與Drupal類似的策略,為編輯者設置一個單獨的二級域名,使用與源站域名相同的數據庫等設置,這樣内部編輯人員看到的内容不會被緩存,也不影響普通用戶浏覽了。
5、緩存清理:
目前還是靠CDN後來來清理,以後會做點開發,在合适的時候和地方調用CDN清理緩存的API來實現。
先記錄到這裡,後面有更多内容再補充記錄。
评论