2013-11-04 66 views
0

我需要重寫domain.comwww.domain.com使用清漆。我已經爲Nginx做過了。但不知道如何做清漆。domain.com到www.domain.com重寫在光油

讓我解釋一下爲什麼我想這樣做,如果我的方法不對,請糾正我。 每當我用domain.com擊中該網站時,我的路徑爲.domain.com。每當我用www.domain.com創建路徑時,它會創建一個新路徑,其路徑爲.www.domain.com 現在,這兩個用於同一用戶的Cookie正在創建會話問題。

我希望,如果我的服務器只接收像www.domain.com請求,則會有與domain.com

所以,理想的情況是沒有關聯的cookie的範圍,問題是,重寫一個好辦法?如果是,那麼如何用清漆做到這一點,我已經嘗試使用Nginx,但沒有運氣。

任何指導深表感謝。多謝你們。

+0

如果你的Nginx發送HTTP重定向光油應轉發它們不會有問題,所以這應該只是無需對Varnish做任何特別的工作。會發生什麼呢?你是否在你的配置中重新定義了'vcl_hash'?測試之前您是否清除緩存? –

+0

關於cookie:在保存cookie時,您可以始終明確將cookie域設置爲'.domain.com',這也可以在www.domain.com上設置。 –

+0

@LudwikTrammer這就是我做的。我必須明確地設置'req.http.host'到'www.domain.com'謝謝 – SAM

回答

2

回答了「重寫」部分(請參閱下面的評論是,可能更容易),你有兩個選擇:

  1. 執行客戶端重定向(首選恕我直言)[A]
  2. 重寫主機內部並[b]

參見:

[A]

sub vcl_recv { 
    // ... 
    if (req.http.host == "domain.com") { 
    error 750 "http://www." + req.http.host + req.url; 
    } 
    // ... 
} 

sub vcl_error { 
    // ... 
    if (obj.status == 750) { 
    set obj.http.Location = obj.response; 
    # Set HTTP 301 for permanent redirect 
    set obj.status = 301; 
    return(deliver); 
    } 
    // ... 
} 

[B]

sub vcl_recv { 
    // ... 
    if (req.http.host == "domain.com") { 
    set req.http.host = "http://www." + req.http.host; 
    } 
    // ... 
} 
+0

謝謝。我必須明確地將'req.http.host'設置爲'www.domain.com'此外,我正在尋找重寫,因爲沒有直接的清漆重定向機制。 – SAM

相關問題