2012-01-11 142 views
0

我在一个负载平衡器运行中的squid 2.7,它似乎想高高兴兴地缓存任何涉及它的方式,包括(特别是烦人)维护页面。的Nginx和轨道维护网页,让鱿鱼2.7不缓存它们,或替代鱿鱼

维护页面通过nginx的错误页面挂钩服务,所以我不似乎有超过其缓存头多的控制,我想只是告诉squid不缓存非200页。有没有办法做到这一点,而不升级鱿鱼? (我知道新的鱿鱼有一种方法来匹配ACL规则的HTTP状态)

本身已经为没有缓存的元标记的网页,但似乎并没有帮助鱿鱼。

下面是配置从nginx的比特发送错误页:

location/{ 
    passenger_enabled on; 
    passenger_friendly_error_pages off; 

    recursive_error_pages on; 

    if (-f $document_root/system/maintenance.html) { 
    return 503; 
    } 

    error_page 503 @503; 
} 

location @503 { 
    if (-f $request_filename) { 
    return 200; 
    break; 
    } 
    error_page 405 = /system/maintenance.html; 
    rewrite ^(.*)$ /system/maintenance.html break; 
} 

也许有更好的方法来做到这一点上nginx的结束,或者一些方式来额外的东西添加到这些错误页面不要让它们与鱿鱼表现得更好。

一般的想法是,如果document_root/system/maintenance.html存在,系统处于维护模式,并且该页面应该呈现所有请求(除了静态文件,以便页面可以引用样式表或图像或什么)

至于鱿鱼结束,我真的没有什么具体以显示它,它的一个非常俗套设置了缓存的反向代理。


在倒装记,也许还有用鱿鱼一个更好的选择,我接受这个建议了。

+0

Nginx为维护页面的请求提供了什么标题?另外,您是否确定维护是有效的(例如缓存控制元标记将被正确解释)? – Nick 2012-01-11 19:27:10

+0

我*认为*所以..它只是一个简单的HTML页面..只是通过验证程序运行它,并将其更改为html41t而不是5,并删除了一个短标签,似乎天真,除非鱿鱼真的很难解析..也许这将使鱿鱼验证它。默认情况下,squid是否在页面内部查看,而不是基于元标签对它们进行缓存? 我真的不能进入维护只是为了它的地狱,现在检查,帮助:( – piotrb 2012-01-11 22:23:19

+0

你能发布两个拷贝到[要点](https://gist.github.com)或某处类似 – Nick 2012-01-11 22:28:48

回答

0

我知道这是不是你在找什么东西但是像这样在系统上更漂亮,这符合文件,然后维护页,如果它是在地方,然后回落到备份服务器

try_files $uri $uri.html /maintenance.html @unicorn_story; 

这对我们通过鱿鱼来说已经足够了,但我会测试它。

您可以在维护后清除鱿鱼。

+0

诶..哇。3年后;)的事情是我真的没有什么关系?该项目了..哦,好吧;) – piotrb 2015-01-31 21:29:01