2009-10-05 79 views
2

看起來我們將很快開始在這裏開始負載平衡我們的網絡服務器。如何在負載平衡的環境中動態編輯robots.txt?

我們有一個動態編輯robots.txt的功能請求,這對一個主機來說不是問題 - 但是一旦我們啓動了負載均衡器,聽起來好像我將不得不將scp文件轉移到其他主機。

這聽起來非常糟糕。你將如何處理這種情況?

我已經讓客戶編輯的元標記「機器人」,這(IMO)要切實做同樣的事情,因爲他從robots.txt的編輯想,但我真的不知道很多關於搜索引擎優化。

也許有處理這種完全不同的方式?

UPDATE

看起來我們將它S3現在存儲和memcache它正面...

我們如何做,現在

所以我們用Merb的。 .I將路線映射到我們的robots.txt,如下所示:

match('/robots.txt').to(:controller => 'welcome', :action => 'robots') 

然後,相關代碼如下所示:

def robots 
    @cache = MMCACHE.clone 
    begin 
    robot = @cache.get("/robots/robots.txt") 
    rescue 
    robot = S3.get('robots', "robots.txt") 
    @cache.set("/robots/robots.txt", robot, 0) 
    end 
    @cache.quit 
    return robot 
end 
+0

在serverfault上這個問題可能會更好,但您的複製代理無法處理它嗎?無論如何,你需要在服務器之間進行某種複製策略,是否有理由不能這樣做? – 2009-10-05 19:43:50

+0

葉..我想如果這是存儲在該會爲現在的工作分貝......聽起來非常的fugly ... – eyberg 2009-10-05 19:57:26

回答

0

我可能有應用程序編輯的robots.txt的內容,並有保存到數據庫中的用戶輸入。然後按一定的時間間隔,讓後臺進程從數據庫中取出最新的數據並推送到您的服務器。

+0

葉..這就是我試圖避免...我不」喜歡這樣的事實那我在推更新到服務器... – eyberg 2009-10-05 19:55:00

+0

我想我並不真的需要推送更新,如果它是在DB商店... – eyberg 2009-10-05 19:59:00

+0

也不知何故,它在robots.txt文件,最終在服務器 – 2009-10-05 20:24:03

0

另一種方法是有被做你的負載平衡不同對待的robots.txt反向代理。您可以直接從反向代理服務器或將該文件的所有請求發送到單個服務器。這是很有道理的,因爲robots.txt會被要求相對較少。

0

我不知道,如果你的家在這呢。如果這樣忽略。 (更新:我看到了一張字條給您原來的職位,但是這可能是有用的reagrdless。)

如果映射一個電話到robots.txt來的HTTP處理程序或類似,您可以生成響應從一個dB表示。

+0

你們 - 我們確實結束了映射...我現在更新我的筆記。 – eyberg 2009-10-09 17:27:57

0

通過您使用的任何動態內容生成服務。它只是一個文件。沒什麼特別的。