2012-01-11 46 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