Varnish の背後に Apache と Nginx の両方を配置するにはどうすればよいですか?

Varnish の背後に Apache と Nginx の両方を配置するにはどうすればよいですか?

私は、ポート 8080 の Apache の背後でポート 80 をリッスンする Varnish を設定し、ポート 8081 に Nginx を配置する予定です。私の VPS のコントロール パネルは Apache のみをサポートしていますが、VPS でホストしているサイトの 1 つを Nginx でテストしたいのですが、Varnish がすでに 80 にあるため、同じポートに Nginx を配置することはできません。

私はApacheを完全に削除したくありません。なぜなら、VPSのコントロールパネルにアクセスするためにまだApacheが必要なからです。セントラApacheが8080のどこに位置しているかを正確に知るには、ここOP は Apache 上で異なる IP に 2 つの異なるドメインを持つことを望んでいたので、実際には役に立ちません。

また、VCL でディレクティブを使用する方法についてどこかで読んだのですserver.portが、どのように実行すればよいかわかりません。私の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 設定言語ドキュメンテーション。

関連情報