Перенаправить HTTPS на многодоменный лак - PullRequest
0 голосов
/ 23 мая 2019

у меня есть два домена на основе одной и той же структуры (magento2) domain1.it domain2.com

Я бы хотел перенаправить их на соответствующую версию SSL. https://domain1.it https://domain2.com

Домен 1 правильно настроен для перенаправления на HTTPS, а мой файл конфигурации лака:

sub vcl_recv {
if ( (req.http.host ~ "^(?i)www.domain1.it" || req.http.host ~ "^(?i)domain1.it") && 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://domain1.it" + req.url;
return(deliver);
}

проблема в том, что синтезатор всегда перенаправляется в один и тот же домен.

Я должен добавить условие if, где я мог бы вызывать подпрограммы, которые перенаправляют на https для domain2

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Ради всего хорошего, пожалуйста, прекратите использовать потусторонние коды состояния, 301 и 302 прекрасно, понятнее и сохранят вам строку.

Я бы советовал не использовать x-forwarded-proto и использоватьТерминатор SSL / TLS, который поддерживает протокол PROXY, но так как это то, что у вас есть, вот вам:

sub vcl_recv {
    if (req.http.X-Forwarded-Proto !~ "https") {
        set req.http.location = "https://" + req.http.host + req.url;
        return(synth(301));
    }
}

sub vcl_synth {
    if (resp.status == 301 || resp.status == 302) {
        set resp.http.location = req.http.location;
        return (deliver);
    }
}

соответствующая ссылка: https://info.varnish -software.com / blog / rewriting-urls-с-лак-перенаправление

0 голосов
/ 28 мая 2019

Инженер Битнами здесь. Я только что просмотрел документацию Varnish и нашел это:

sub vcl_recv {
    if (client.ip != "127.0.0.1" && std.port(server.ip) == 80 && req.http.host ~ "^(?i)example.com") {
        set req.http.x-redir = "https://" + req.http.host + req.url;
        return(synth(850, "Moved permanently"));
    }
}

sub vcl_synth {
    if (resp.status == 850) {
        set resp.http.Location = req.http.x-redir;
        set resp.status = 302;
        return (deliver);
    }
}

Это полезно, когда вы хотите перенаправить клиентов на SSL-версию вашего сайта. Больше информации здесь:

https://varnish -cache.org / ПРОФ / вики / VCLExampleRedirectInVCL

...