使用V-Hosts的多个子域的Varnish VCL设置?

时间:2013-02-22 07:02:36

标签: apache subdomain virtualhost varnish multiple-domains

让我们说简单,因为我是Varnish的初创公司,我有一个服务器,里面有VarnishApache。 Apache中有多个子域作为虚拟主机。

让我们说:

  • sub1.example.com
  • sub2.example.com
  • sub3.example.com

然后我将Apache的httpd.conf端口更改为:

Listen 8080

然后,现在我在VCL中的后端设置是:

backend default{
  .host = "127.0.0.1";
  .port = "8080";
}

现在我的问题是:

  • 这种设置是否足够?说真的,我在这里失踪了什么?
  • 我还需要清楚的是,首先,在Apache httpd.conf端,是否只需要更改Listen值?

这个怎么样:

NameVirtualHost *:80

以及每个子域的V.Host设置:

<VirtualHost *:80>
..
..
</VirtualHost>
  • 我是否还需要将这些端口更改为8080,对于Apache端?

最后在VCL配置中,我看到了这样的情况:

if (req.http.host == ".........com") {
    ..
}

..在其他论坛。

  • 我的VCL里面没有这种设置
  • 所以我需要这样的东西和/或认真对待我的架构我会缺少什么?

全部谢谢!

1 个答案:

答案 0 :(得分:2)

Varnish将在port 80上运行。因此,Apache应该在port 80之外的任何其他端口上运行。我个人准备将port 81用于Apache,因为port 8080正常使用port 81

Listen 81 NameVirtualHost *:81 上倾听Apache。 httpd.conf (/etc/httpd/conf/httpd.conf)。

backend default {
  .host = "127.0.0.1";
  .port = "81";
}

Varnish的默认配置文件。 default.vcl (/etc/varnish/default.vcl)。

# vhost : sub1.example.net
<VirtualHost *:81>
  ...
  ServerName sub1.example.net
  ...
  <Directory "/var/www/html/vhosts/example.net/sub1/public_html">
    ...
  </Directory>
  ...
</VirtualHost>

# vhost : sub2.example.net
<VirtualHost *:81>
  ...
  ServerName sub2.example.net
  ...
  <Directory "/var/www/html/vhosts/example.net/sub2/public_html">
    ...
  </Directory>
  ...
</VirtualHost>

sub1.example.net和sub2.example.net的虚拟主机。 vhosts.conf (/etc/httpd/conf.d/vhosts/example.net.conf)。

{{1}}