2009-10-05 48 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

通过您使用的任何动态内容生成服务。它只是一个文件。没什么特别的。