Como posso ter Apache e Nginx por trás do Varnish?

Como posso ter Apache e Nginx por trás do Varnish?

Eu tenho uma configuração onde tenho o Varnish escutando na porta 80 atrás do Apache na porta 8080 enquanto pretendo ter o Nginx na 8081. O painel de controle do meu vps suporta apenas o Apache, mas quero testar um dos sites que hospedei no meu VPS no Nginx , e como o Varnish já está no 80, não posso ter o Nginx na mesma porta.

Não quero me livrar completamente do Apache porque ainda preciso dele para acessar o painel de controle do meu vps,Sentorapara ser mais preciso onde o Apache fica no 8080. Na pergunta feitaaqui, o OP queria ter dois domínios diferentes em IPs diferentes apenas no Apache, então isso realmente não ajuda.

Além disso, li em algum lugar sobre o uso da server.portdiretiva no meu vcl, mas não tenho certeza de como fazer isso. Aqui está a default.vclaparência de uma parte da minha:

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

PS: Ainda não instalei o Nginx.

Responder1

Aqui você deseja configurar um back-end adicional no Varnish e encaminhar algumas solicitações para ele.

Primeiro adicione um novo backend para Nginx:

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

Então você pode encaminhar algumas solicitações para ele. Isso normalmente é feito na vcl_recvsub-rotina. Por exemplo, se o Sentora for acessado através do domínio 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;
    }
}

VerConfiguração avançada de back-endpara mais exemplos. Também há muitos exemplos noLinguagem de configuração do Varnishdocumentação.

informação relacionada