如何让 Apache 和 Nginx 都位于 Varnish 之后?

如何让 Apache 和 Nginx 都位于 Varnish 之后?

我有一个设置,其中 Varnish 在 Apache 的 8080 端口后面监听 80 端口,而我打算让 Nginx 监听 8081 端口。我的 vps 控制面板只支持 Apache,但我想在 Nginx 上测试我在 VPS 上托管的一个站点,由于 Varnish 已经在 80 上,所以我不能让 Nginx 在同一端口上。

我不想完全摆脱 Apache,因为我仍然需要它来访问我的 vps 控制面板,圣托拉准确地说,Apache 位于 8080 上。在提出的问题中这里,OP 只想在 Apache 上的不同 IP 上拥有两个不同的域,所以这实际上没有什么帮助。

另外,我读过一些关于server.port在 vcl 中使用指令的文章,但我不知道该怎么做。下面是我的部分内容default.vcl

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

PS:我还没有安装Nginx。

答案1

这里您需要在 Varnish 中设置一个额外的后端,并将一些请求路由到它。

首先为 Nginx 添加一个新的后端:

backend nginx {
    .host = "127.0.0.1";
    .port = "8081";
}

然后,您可以将一些请求路由到它。这通常在vcl_recv子程序中完成。例如,如果通过域访问 Sentora sentora.example.org

sub vcl_recv {
    if (req.http.host ~ "(?i)^sentora.example.org$") {
        # Route requests to sentora.example.org to the old Apache backend.
        set req.backend = default;
    } else {
        # Everything else to nginx.
        set req.backend = nginx;
    }
}

高级后端配置更多示例。Varnish 配置语言文档。

相关内容