Wie kann ich Apache und Nginx beide hinter Varnish haben?

Wie kann ich Apache und Nginx beide hinter Varnish haben?

Ich habe ein Setup, bei dem Varnish auf Port 80 hinter Apache auf Port 8080 lauscht, während ich beabsichtige, Nginx auf 8081 zu haben. Das Bedienfeld meines VPS unterstützt nur Apache, aber ich möchte eine der Sites testen, die ich auf meinem VPS auf Nginx gehostet habe, und da Varnish bereits auf 80 ist, kann ich Nginx nicht auf demselben Port haben.

Ich möchte Apache nicht komplett loswerden, da ich es immer noch brauche, um auf das Control Panel meines VPS zuzugreifen.Sentoraum genau zu sein, wo Apache auf 8080 sitzt. In der gestellten FrageHier, der OP wollte zwei verschiedene Domänen auf unterschiedlichen IPs nur auf Apache haben, also hilft das nicht wirklich.

Außerdem habe ich irgendwo gelesen, wie man die server.portDirektive in meiner VCL verwendet, aber ich bin mir nicht sicher, wie ich das anstellen soll. So sieht ein Teil meiner default.vclaus:

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

PS: Ich habe Nginx noch nicht installiert.

Antwort1

Hier möchten Sie ein zusätzliches Backend in Varnish einrichten und einige Anfragen dorthin weiterleiten.

Fügen Sie zunächst ein neues Backend für Nginx hinzu:

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

Dann können Sie einige Anfragen dorthin weiterleiten. Dies geschieht normalerweise in der vcl_recvSubroutine. Wenn beispielsweise über die Domäne auf Sentora zugegriffen wird 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;
    }
}

SehenErweiterte Backend-Konfigurationfür weitere Beispiele. Es gibt auch viele Beispiele in derVarnish-KonfigurationsspracheDokumentation.

verwandte Informationen