Назад | Перейти на главную страницу

Как я могу перенаправить все домены на https в Varnish?

я использую

Apache on port 8080
Nginx on 443
Varnish on 80

Я не хочу менять конфигурацию лака каждый раз, когда добавляю новый домен на сервер. Я хочу знать, есть ли какое-либо регулярное выражение или переменная, чтобы лак перенаправлял все домены на https.

sub vcl_recv {
    if (client.ip != "127.0.0.1" && req.http.host ~ "example.com") {
       set req.http.x-redir = "https://example.com" + req.url;
       return(synth(850, ""));
    }
}

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

у меня есть

example.com abc.com xyz.com 123.com www.420.com abc.123.com

Я хочу, чтобы все они перенаправляли на https со своими поддоменами (и, если возможно, со всеми будущими доменами).

Спасибо.

Попробуйте следующую конфигурацию

sub vcl_recv {

if (req.http.host == "www.example.com" &&
    req.url ~ "^/admin")
{

  if (req.http.X-Forwarded-Proto !~ "https") {
    return (synth(850, "Moved Permanently"));
  }

return (pass);
}
    if (req.restarts == 0) {
    if (req.http.x-forwarded-for) {
        set req.http.X-Forwarded-For =
        req.http.X-Forwarded-For + ", " + client.ip;
    } else {
        set req.http.X-Forwarded-For = client.ip;
    }
}


sub vcl_synth {
  if(resp.status == 850) {
    set resp.http.Location = "https://" + req.http.host + req.url;
    set resp.status = 301;
}