菲彩国际

Posts Tagged ‘.htaccess’

爬蟲與資源消耗

最近服務器總是告警,大半夜的一連串短信通知。
開始還嘟囔著便宜沒好貨,1核1G 的機器湊合著過吧。
忍了又忍,每次重啟完,過不了幾天就死了。只好抽時間看一下。
拿到 access.log ,初步分析是 404 的頁面和 search 結果頁被吃盡了資源。

一個是被爬蟲爬了無數次。
菲彩国际 一個是被惡意廣告搜了無數次。

爬蟲的好處理:
  1. 先調整了 robots.txt,讓聽話的爬蟲別爬我廢棄的目錄:

    User-agent: *
    Disallow: /xxxx/xxxx/

  2. 不聽話的沒辦法,限制了幾個 IP ,手動的:

    order allow,deny
    deny from 46.229.168.65
    deny from 46.229.168. 121.224.143. (限制 IP 段,空格分開)
    allow from all

  3. 然而懶得總是查 IP ,得,直接屏蔽掉 xxxx 整個目錄:

    order allow,deny
    deny from all

  4. 目錄外的文件 301 指向首頁,誰都別訪問了:
    <?php
    header("HTTP/1.1 301 Moved Permanently");
    header("Location:http://cnzhongka.com");
    ?>
惡意搜索廣告:

這個麻煩點,我也不能屏蔽掉搜索功能,畢竟自己還要用。

  1. 還是先告訴懂事的爬蟲,別爬這些鏈接:

    Disallow: /search/*
    Disallow: /?s=
    Disallow: /index.php?s=

  2. 然后在模板的 function.php 里,加入個搜索的限制:
    add_action('admin_init', 'uicss_search_ban_key');
    function uicss_search_ban_key() {
        
    add_settings_field('uicss_search_key', 'uicss搜索關鍵詞屏蔽', 'uicss_search_key_callback_function', 'reading');
        
    register_setting('reading', 'uicss_search_key');
    }
    function uicss_search_key_callback_function() {
        
    echo '<textarea name="uicss_search_key" rows="10" cols="50" id="uicss_search_key" class="large-text code">' . get_option('uicss_search_key') . '</textarea>';
    }
    add_action('template_redirect', 'uicss_search_ban');
    function uicss_search_ban() {
        
    if (is_search()) {
            
    global $wp_query;
            
    $uicss_search_key = get_option('uicss_search_key');
            
    if ($uicss_search_key) {
                
    $uicss_search_key = str_replace("\r\n", "|", $uicss_search_key);
                
    $BanKey = explode('|', $uicss_search_key);
                
    $S_Key = $wp_query->query_vars;
                
    foreach ($BanKey as $Key) {
                    
    if (stristr($S_Key['s'], $Key) != false) {
                        
    wp_die('請不要搜索非法關鍵字');
                    
    }
                
    }
            
    }
        
    }
    }

    上傳好之后,在后臺可以配置一些關鍵詞,例如:
    www com net 杏彩,一行一個,禁止搜索這些詞。

  3. 再然后,讀 log 發現,這些惡意搜索都是無 referer 的直接流量,那我可以改 search.php 的頭一行,加個域的判斷就好了:

    <?php
    $host = $_SERVER['HTTP_REFERER'];
    if (substr($host, 0, 16) != 'http://cnzhongka.com/') {
        
    header("location:http://cnzhongka.com/a/go-away.html");
        
    exit;
    } //是自己人再去讀數據庫,加載 header,不是自己人的請走開。
    get_header();
    ?>
  4. 有來源的這么搞:

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} laobiao\.php [NC,OR]
    RewriteCond %{HTTP_REFERER} xxxx\.org
    RewriteRule .* - [F]

  5. 訪問指定文件名的:
    <Files ~ ".asp$">
         Order allow,deny
         Deny from all
    </Files>
  6. <FilesMatch ".(asp|htaccess|jsp|rar|zip)$">
     Order allow,deny
     Deny from all
    </FilesMatch>

    <FilesMatch "(wuwu11|xw|xw1|9678|db.init).php">
     Order allow,deny
     Deny from all
    </FilesMatch>
  7. 最后逼不得已,可以把 user agent 符合的全拒絕掉。(他們假裝正常用戶也是讓人煩躁)
    菲彩国际 配合著 user-agent Switcher 試了半天,原來各種符號全都需要轉義,不僅是空格和點,連括號都要轉,真是費勁:

    RewriteCond %{HTTP_USER_AGENT} "Mozilla/5\.0\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 10_12_4\)\ AppleWebKit/537\.36\ \(KHTML,\ like\ Gecko\)\ Chrome/57\.0\.2987\.133\ Safari/537\.36"

折騰了好幾通,繼續觀察 ing
注意,折騰的時候找個測試目錄玩,自己把自己搞掛了無數次,一個空格沒轉義就整站 500 了。

修改.htaccess,提升你的網站加載速度

有時候遇到一個比較復雜的問題,我會選擇暫時放一放。
YSlow的檢測結果,當時優化掉幾個問題后,就暫時放手了。

最近在網站優化上有了新的認識,應用一下:

  1. Add an Expires or a Cache-Control Header

    簡單點說:就是緩存一下不常修改的文件,提升訪問速度。
    菲彩国际 再簡單點說:就是在.htaccess文件中寫入以下內容:

    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A600
    ExpiresByType image/x-icon A2592000
    ExpiresByType application/x-javascript A2592000
    ExpiresByType text/css A604800
    ExpiresByType image/gif A2592000
    ExpiresByType image/png A2592000
    ExpiresByType image/jpeg A2592000
    ExpiresByType text/plain A86400
    ExpiresByType application/x-shockwave-flash A2592000
    ExpiresByType video/x-flv A2592000
    ExpiresByType application/pdf A2592000
    ExpiresByType text/html A600
    </IfModule>

    text/css之類代表文件類型,A2592000表示在瀏覽器中的緩存時間,2592000秒=30天。

  2. Gzip components

    Gzip壓縮是減少文件體積增加用戶體驗的簡單方法,
    同樣,添加以下代碼到.htaccess文件即可。

    <ifmodule mod_deflate.c>
    AddOutputFilter DEFLATE html xml php js css
    </ifmodule>

  3. 配置ETag

    我沒看明白,總之結論是:如果你沒有使用ETag提供的靈活的驗證模式,那么干脆把所有的ETag都去掉會更好。

    我的網站只放在一臺服務器上,我寫.htaccess關了它:

    FileETag none

崔凱博客
Powered by | Theme by ck web design | TOP 頂部
Copyright ? 崔凱 All rights reserved. 蜀ICP備12025891號.
菲彩国际_菲彩国际官网_Welcome 紫金阁棋牌-紫金阁棋牌官网 紫金阁棋牌-紫金阁棋牌官网 紫金阁棋牌-紫金阁棋牌官网 紫金阁棋牌-紫金阁棋牌官网