默认端口6081上的清漆

时间:2018-06-06 21:52:40

标签: varnish varnish-vcl

我想尝试一个Varnish配置,它在默认端口6081上监听,Apache停留在80.这个想法来自这个blog about varnish

iptables重定向然后将所有80个流量发送到6081.这样做可以让我继续使用我的Web控制面板而不会破坏它(面板在8080本身运行,并且在Apache的监听改变时也会中断)

现在我正在安装Apache和Varnish的服务器的干净安装,只是为了看看它是否正常工作。我可以通过以下方式获得Varnish并运行:

curl -I 192.168.0.1:6081

然而,即使iptable规则启动并运行,它也无法单独处理IP。以下是我的结果和设置显然使用虚拟IP 192.168.0.1

iptables -L -t nat

Chain PREROUTING (policy ACCEPT)
target     prot opt source      destination         
REDIRECT   tcp  --  anywhere    anywhere       tcp dpt:http redir ports 6081

IP表规则 - (来自here的想法)

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 6081

curl -I与端口6081的结果

curl -I http://192.168.0.1:6081
HTTP/1.1 200 OK
Date: Wed, 06 Jun 2018 21:45:20 GMT
Server: Apache/2.4.25 (Debian)
Last-Modified: Wed, 06 Jun 2018 21:08:27 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.0)
ETag: W/"29cd-56dff9168052e-gzip"
Accept-Ranges: bytes
Connection: keep-alive

卷曲的结果-I没有端口

curl -I http://192.168.0.1
HTTP/1.1 200 OK
Date: Wed, 06 Jun 2018 21:36:49 GMT
Server: Apache/2.4.25 (Debian)
Last-Modified: Wed, 06 Jun 2018 21:08:27 GMT
ETag: "29cd-56dff9168052e"
Accept-Ranges: bytes
Content-Length: 10701
Vary: Accept-Encoding
Content-Type: text/html

的/ etc /默认/清漆

DAEMON_OPTS="-a :6081 \
         -T localhost:6082 \
         -f /etc/varnish/default.vcl \
         -S /etc/varnish/secret \
         -s malloc,256m

/etc/varnish/default.vcl

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "127.0.0.1";
    .port = "80";

我错过了什么? Apache是​​80,Varnish是6081,80流量被重定向到6081,Varnish正在收听。

3 个答案:

答案 0 :(得分:1)

我不确定我是否完全掌握了这里的问题。为什么从80重定向到6081?

默认情况下,Varnish将在6081下公开,这主要是不与在80等流行端口下运行的其他现有服务发生冲突。

鉴于您的设置,我会反过来做。我将在端口80下启动Varnish,并在6081下启动Apache(或其他任何端口-我假设8089在其后),当然,请确保将Apache设置为Varnish的正确后端。

毕竟,这是您想要带走热量的代理。

例如:

/etc/varnish/default.vcl

backend default {
    .host = "127.0.0.1";
    .port = "8089"; # I will assume Apache runs under 8089.
}

因此,是这样的:

$ curl -is http://127.0.0.1/foo/bar

首先会打入Varnish,Varnish会尝试通过询问其后端(上面定义的Apache)来满足请求。

话虽如此,您可以禁用80到6081重定向。

答案 1 :(得分:0)

为什么要这样?

我认为您应该在端口80上使用清漆,并在apache上使用两个位置,比如说:8080和:8081。

APACHE>设置2个虚拟主机
Site1>在端口8080上播放面板
Site2>在端口8081上播放您的站点

清漆>
为面板设置BackEnd1
为您的网站设置BackEnd2
一个用于8080的Web面板 还有一个在8081实际站点上
告诉清漆backend1“面板”将所有内容传递给backend1 8080(这样清漆将把您传递给apache)
告诉varnish的backend2“站点”缓存您想要为8081缓存的任何内容


所以,只说几句话。
面板由清漆提供,并将所有内容传递给Apache 从清漆服务的站点,您可以在其中应用命中率/未命中率等缓存规则。
请更改/ etc / default / varnish并将其设置在端口80上。
PS:切勿将其应用于Varnish / Apache的组合,而是在Varnish / nginx上进行。 您应该检查apache是​​否可以执行此操作。我怀疑他不能.....

答案 2 :(得分:0)

让我看看是否可以帮忙解决这个问题。因此,您只想尝试与Web服务器并行使用Varnish,以便可以尝试。如果是这样,那就不成问题了。

首先,端口6081用于Varnish的管理功能。您可以通过此端口远程进行处理。

假设您的Web服务器位于端口80上,则可以将Varnish服务器配置为:8080,可以通过以下方式将/ etc / varnish配置设置为链接:

NFILES=131072
MEMLOCK=82000
RELOAD_VCL=1
VARNISH_VCL_CONF=/etc/varnish/mysite.vcl
VARNISH_LISTEN_PORT=8080
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
VARNISH_ADMIN_LISTEN_PORT=6082
VARNISH_SECRET_FILE=/etc/varnish/secret
VARNISH_MIN_THREADS=100
VARNISH_MAX_THREADS=8000
VARNISH_THREAD_TIMEOUT=240
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
VARNISH_STORAGE_SIZE=12G
#VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"
VARNISH_TTL=120
DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
             -f ${VARNISH_VCL_CONF} \
             -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
             -t ${VARNISH_TTL} \
             -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \
             -u varnish -g varnish \
             -S ${VARNISH_SECRET_FILE} \
             -s ${VARNISH_STORAGE}"

然后,在“ mysite.vcl”配置中,可以将清漆链接到您的网站:

backend webserver {         # Define one backend
  .host = "127.0.0.1";    # IP or Hostname of backend
  .port = "80";           # Port for backend listener (Apache, NGINX, etc.)

然后只需设置IP表以接受8080和80的流量,就可以分别在:8080和80上分别测试Varnish和Web服务器。顺便说一句,您不应将管理端口(6081、6082等)暴露在外面。

如果您决定使用Varnish,则可以将其放在Web服务器的前面。将清漆侦听端口设置为80,将Web服务器设置为8080,或者将其他任何端口(如果它们位于同一服务器上)设置为8080。如果它们是不同的服务器,则可以将Web服务器端口保留为80,只需将其从防火墙中拉出即可,使其无法直接与外界联系。

祝你好运!