domain.com到www.domain.com在Varnish中重写

时间:2013-11-04 12:17:42

标签: nginx rewrite varnish varnish-vcl

我需要使用清漆将domain.com重写为www.domain.com。我已经为Nginx做过了。但是没有想法如何做清漆。

让我解释一下为什么我要这样做,如果我的方法有误,那么请纠正我。 每当我使用domain.com访问该网站时,我都会使用路径为.domain.com的Cookie。每当我使用www.domain.com点击路径时,它会创建一个路径为.www.domain.com的新Cookie 现在,同一用户的这两个cookie正在创建会话问题。

我希望如果我的服务器只收到www.domain.com之类的请求,那么就不存在与domain.com相关联的Cookie范围

理想情况下,问题是,重写是一种好方法吗?如果是,那么如何使用清漆,我已经尝试过使用Nginx但没有运气。

非常感谢任何指导。谢谢你们。

1 个答案:

答案 0 :(得分:2)

回答“重写”部分(请参阅评论,因为这可能更容易),您有两个选择:

  1. 执行客户端重定向(首选恕我直言)[a]
  2. 在内部重写主机[b]
  3. 另见:

    [α]

    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;
      }
      // ...
    }