1 votes

Lighttpd Redirect to SSL résulte en une boucle de redirection 301

J'utilise lighttpd 1.4.31 avec le support ssl et j'ai un problème pour forcer https sur un virtualhost spécifique. Si je désactive la ligne de redirection de la configuration suivante, cela fonctionne comme prévu (http et https fonctionnent tous les deux, mais pas de redirection), mais lorsque je l'active, je constate que le navigateur est pris dans une boucle de 301s. Je ne comprends pas pourquoi cela se produit car pour moi la redirection ne devrait s'appliquer que sous http. J'ai chargé mod_redirect en haut de la configuration, et un autre serveur virtuel avec ssl activé pour un certain domaine... Je ne pense pas que cela ait un quelconque impact. Qu'est-ce que je fais de mal dans le fragment de configuration suivant ? Veuillez noter que j'ai substitué site.example.com à mon domaine.

$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")
    }
}

1voto

j0k Points 401

Je regarde ma configuration, qui est presque la même que la vôtre :

  • Je veux https
  • et http redirige vers https.

J'ai une chose de plus dans ma configuration de socket :

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

        # .....

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

Et ma redirection est gérée en dehors de la première hôte comme ceci :

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

Et tout fonctionne comme un charme.

1voto

Stefan Points 819
  • Je pense que votre proxy redirige vers http.
  • déboguer les en-têtes avec curl -v
  • debug.log-request-handling = "enable" et vérifier error.log, voir aussi DebugVariables

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X