Lighttpd Redirect para resultados SSL no loop de redirecionamento 301

1

Estou executando o lighttpd 1.4.31 com suporte ssl e estou tendo um problema ao forçar o https em um virtualhost específico. Se eu desabilitar a linha de redirecionamento da seguinte configuração, ele funcionará como esperado (http e https funcionando, mas sem redirecionamento), mas quando eu o habilito, acho que o navegador obtém causa em um loop de 301s. Eu não entendo porque isso está acontecendo como para mim o redirecionamento só deve aplicar em http. Eu tenho mod_redirect carregado no topo da configuração, e um outro virtualhost com ssl forçado para algum domínio ... Eu não acredito que deveria ter qualquer impacto. O que estou fazendo errado no seguinte trecho de configuração? Observe que substituí site.example.com pelo meu domínio.

$HTTP["host"] == "site.example.com" {
    dir-listing.activate = "enable"
    accesslog.filename = "/home/lighttpd/site.example.com/logs/access.log"
    server.document-root = "/home/lighttpd/site.example.com/htdocs"
    server.upload-dirs = ("/tmp")
    server.errorlog = "/home/lighttpd/site.example.com/logs/error.log"
    $SERVER["socket"] == ":443" {
            ssl.engine = "enable"
            ssl.pemfile = "/home/lighttpd/site.example.com/cert.pem"

            $HTTP["url"] =~ "^/shell" { # shellinabox
                    proxy.server = ( "" => ((
                                    "host" => "127.0.0.1",
                                    "port" => 4200,
                                    ),),)
            }
    }
    $HTTP["scheme"] == "http" {
            url.redirect = (".*" => "https://site.example.com/$0")
    }
}
    
por Trcx 13.03.2013 / 23:02

2 respostas

1

Analisando minha configuração, que é quase igual a você:

  • Eu quero https
  • e http redirecionam para https.

Eu tenho mais uma coisa dentro da configuração do meu socket:

$SERVER["socket"] == ":443" {
        ssl.engine  = "enable"

        # .....

        setenv.add-environment = (
                "HTTPS" => "on"
        )
}

E meu redirecionamento é tratado fora do primeiro host , assim:

$HTTP["scheme"] == "http" {
        $HTTP["host"] =~ "site.example.fr" {
                url.redirect = ( "^/(.*)" => "https://site.example.fr/$1" )
        }
}

E tudo funciona como um encanto.

    
por 14.03.2013 / 09:36
1
  • suspeito que o seu proxy redireciona de volta para http
  • depurar os cabeçalhos com curl -v
  • debug.log-request-handling = "enable" e verifique error.log, veja também DebugVariables
por 14.03.2013 / 14:39