Como aplicar o SSL no verniz 4

6

Estou com o objetivo de redirecionar os clientes para uma versão SSL de um site usando o Varnish. No verniz 3 isso pode ser feito pelo seguinte no VCL:

sub vcl_recv {
    if ( (req.http.host ~ "^(?i)somesite.org" || req.http.host ~ "^(?i)www.somesite.org")
         && req.http.X-Forwarded-Proto !~ "(?i)https") {
        set req.http.x-Redir-Url = "https://www.somesite.org" + req.url;
        error 750 req.http.x-Redir-Url;
    }
}

sub vcl_error {
    if (obj.status == 750) {
        set obj.http.Location = obj.response;
        set obj.status = 302;
        return (deliver);
    }

Entre as versões 3 e 4 do Varnish, houve mudanças nos requisitos do vcl, que podem ser encontradas nos documentos do verniz: link .

Minha tentativa de uma versão 4 do redirecionamento leva a um loop de redirecionamento. Não tenho certeza se esta seção do vcl está incorreta ou se até mesmo a implementação correta funcionaria com a configuração atual.

De qualquer forma, seria útil ter um trabalho confirmado? Varnish 4 versão deste. Minha tentativa é:

sub vcl_recv {
    if ( (req.http.host ~ "^(?i)somesite.org" || req.http.host ~ "^(?i)www.somesite.org")
         && req.http.X-Forwarded-Proto !~ "(?i)https") {
        set req.http.x-Redir-Url = "https://www.somesite.org" + req.url;
        return (synth(750, req.http.x-Redir-Url));
  }
}

sub vcl_synth {
    if (resp.status == 750) {
        set resp.http.Location = resp.reason;
        set resp.status = 302;
        return (deliver);
    }

Alguém familiarizado com isso e capaz de identificar se está correto ou incorreto?

    
por Taylor Taff 23.12.2014 / 16:12

1 resposta

7

Tente o seguinte para o Varnish 4 enquanto atualiza o TLD com seus respectivos valores:

sub vcl_recv {
        if ( (req.http.host ~ "^(?i)www.domain.com") && req.http.X-Forwarded-Proto !~ "(?i)https") {
                return (synth(750, ""));
        }
}

sub vcl_synth {
    if (resp.status == 750) {
        set resp.status = 301;
        set resp.http.Location = "https://www.domain.com" + req.url;
        return(deliver);
    }
}

Você deve conseguir manter a declaração || e ela deve funcionar (não testada):

sub vcl_recv {
        if ( (req.http.host ~ "^(?i)www.domain.com" || req.http.host ~ "^(?i)domain.com") && req.http.X-Forwarded-Proto !~ "(?i)https") {
                return (synth(750, ""));
        }
}
    
por 23.12.2014 / 23:52

Tags