我有一个服务器,有两个IP地址: eth0 =1.2.3.4eth0:0= 5.6.7.8
/etc/主机
127.0.0.1 localhost
1.2.3.4 domain1.com
5.6.7.8 domain2.net在这个服务器中,我让Apache运行以下配置(/etc/httpd/conf/httpd.conf):
...
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/清漆
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
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。
在查询侦听我的服务器的端口时,我可以注意到以下内容:
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配置吗?以及如何让它发挥作用?
提前谢谢。
发布于 2013-10-06 11:24:25
在/etc/sysconfig/varnish中,只需编写变量DAEMON_OPTS两次,因此只有第二组参数传递给清漆守护进程。但是,既然您只使用一个vcl脚本,为什么要启动两个清漆守护进程?
两个IP上的一个守护进程都可以工作,因此您可以简单地删除DAEMON_OPTS中的域部分,清漆将在所有接口上侦听:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"-T是用于管理接口的。大多数情况下,您只希望从本地主机访问此文件。
https://stackoverflow.com/questions/19208258
复制相似问题