首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清漆缓存:1个服务器,2个,2个网站

清漆缓存:1个服务器,2个,2个网站
EN

Stack Overflow用户
提问于 2013-10-06 11:15:55
回答 1查看 1.1K关注 0票数 1

我有一个服务器,有两个IP地址: eth0 =1.2.3.4eth0:0= 5.6.7.8

/etc/主机

代码语言:javascript
复制
127.0.0.1 localhost
1.2.3.4 domain1.com
5.6.7.8 domain2.net

在这个服务器中,我让Apache运行以下配置(/etc/httpd/conf/httpd.conf):

代码语言:javascript
复制
...
Listen 1.2.3.4:8080
Listen 5.6.7.8:8080
...
<VirtualHost 1.2.3.4:8080>
DocumentRoot /var/www/domain1.com/public_html
...
</VirtualHost>
<VirtualHost 5.6.7.8:8080>
DocumentRoot /var/www/domain2.net/public_html
...
</VirtualHost>

到目前为止还不错,我可以让我的and服务器正常工作。

然后,我安装了Varnish,参数如下:

/etc/sysconfig/清漆

代码语言:javascript
复制
NFILES=131072
MEMLOCK=82000
NPROCS="unlimited"
RELOAD_VCL=1
VARNISH_LISTEN_PORT=80
DAEMON_OPTS="-a domain1.com:80 \
             -T domain1.com:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"
DAEMON_OPTS="-a domain2.net:80 \
             -T domain2.net:6083 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,512m"

/etc/清漆/default.vcl

代码语言:javascript
复制
backend domain1 {
  .host = "1.2.3.4";
  .port = "8080";
}
backend domain2 {
  .host = "5.6.7.8";
  .port = "8080";
}
sub vcl_recv {
    if (req.http.host == "domain1.com") {
        set req.http.host = "domain1.com";
        set req.backend = domain1;
        return (lookup);
    }
    if (req.http.host == "domain2.net") {
        set req.http.host = "domain2.net";
        set req.backend = domain2;
        return (lookup);
    }
}

但我可以访问domain2.net网站,但不能访问domain1.com。

在查询侦听我的服务器的端口时,我可以注意到以下内容:

代码语言:javascript
复制
user@host# netstat -an | more
tcp        0      0 5.6.7.8:80              0.0.0.0:*                   LISTEN
tcp        0      0 5.6.7.8:8080            0.0.0.0:*                   LISTEN
tcp        0      0 1.2.3.4:8080            0.0.0.0:*                   LISTEN
tcp        0      0 5.6.7.8:6083            0.0.0.0:*                   LISTEN

有人知道为什么Varnish忽略所有1.2.3.4 / domain1.com配置吗?以及如何让它发挥作用?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-06 11:24:25

/etc/sysconfig/varnish中,只需编写变量DAEMON_OPTS两次,因此只有第二组参数传递给清漆守护进程。但是,既然您只使用一个vcl脚本,为什么要启动两个清漆守护进程?

两个IP上的一个守护进程都可以工作,因此您可以简单地删除DAEMON_OPTS中的域部分,清漆将在所有接口上侦听:

代码语言:javascript
复制
DAEMON_OPTS="-a :80 \
         -T localhost:6082 \
         -f /etc/varnish/default.vcl \
         -S /etc/varnish/secret \
         -s malloc,256m"

-T是用于管理接口的。大多数情况下,您只希望从本地主机访问此文件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19208258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档