2013-04-08 59 views
0

我面臨的一個問題是,在特定情況下,清漆未發送中介代理IP或公共IP。 方案是如下:Varnish從X-Forwarded中刪除公共IP地址爲

  • 一些酒店/公司Squid代理配置和互聯網的所有流量通過魷魚路由。

  • 用戶首先訪問我公司的網站點擊率的負載平衡器然後塗漆&然後阿帕奇

  • 的Apache配置有mod_geoip。我網站上的代碼根據IP地址進行國家重定向。

問題:

  • 當一個用戶(即squid代理後面)訪問我公司的背後負載平衡器的網站 - >清漆 - >阿帕奇 - 這裏阿帕奇只得到內部IP(他的私人IP)&負載Balancer內部IP作爲X-forwarded-for,因此基於IP的重定向失敗!

在Apache日誌(配置爲登錄X - 轉發,IP)我看到的用戶私網IP &然後我的負載均衡專用IP。

172.10.5.10,LoadBalancerIP - - [......]

  • 當訪問其他網站不具備光油相同的用戶,點擊負載均衡 - >阿帕奇 - 這裏阿帕奇得到用戶私有IP &用戶公共IP作爲X前轉和基於IP的國家重定向工作正常。

在Apache日誌中(配置爲記錄X-Forwarded-IP)我看到用戶私有IP,然後他的公有IP也被記錄下來。

172.10.5.10,PublicIP - - [.......]

我的清漆配置是如下。

 if (req.restarts == 0) { 
        if (req.http.x-forwarded-for) { 
       set req.http.X-Forwarded-For = 
        req.http.X-Forwarded-For + ", " + client.ip; 
        } else { 
       set req.http.X-Forwarded-For = client.ip; 
        } 
      } 

PS:我已經Google'd各個環節我能找到的和每一個環節提供了以下光油配置

現在得到這個問題解決了,我不得不繞過清漆,現在網站的流量直接觸及Apache,但我需要將Varnish從Cache和Speedy交付服務器內容中還原到服務器內容。

如果有人能指導我如何解決這個問題,將不勝感激。

謝謝!

+0

你好,我已經收集光油日誌上述問題,並粘貼@ http://pastebin.ca/2353444 – KeyurM 2013-04-09 06:59:37

回答

1

上述問題已解決。信貸去Mithrandir @ Varnish IRC頻道。謝謝! 下面提到的更改是解決問題所必需的。

在default.vcl添加的開始:

import std; 

下面的「如果(req.http。X-轉換)「補充:

std.collect(req.http.x-forwarded-for); 
  • 可做清漆configtest &重裝這應該會顯示公共IP

  • 下面是從vmod_std的文檔的解釋:

收集

Prototype 
      collect(HEADER header) 

    Return value 
      Void 

    Description 
      Collapses the header, joining the headers into one. 

    Example 
      std.collect(req.http.cookie); This will collapse several Cookie: 
      headers into one, long cookie header.