J'utilise un équilibreur de charge de racks qui me permet de configurer ma clé SSL/PEM à l'intérieur du panneau d'administration. Tout fonctionne bien, je peux utiliser des protocoles HTTP et HTTPS. Mais si j'essaie de rediriger http sur https en utilisant:
server{
listen *:80;
server_name mydomain.com www.mydomain.com;
rewrite ^ https://mydomain.com$request_uri? permanent;
... Je reçois une boucle de redirection. Je me rends compte que je n'écoute pas le port 443, mais c'est parce que l'équilibreur de chargement manipulé cela pour moi. J'ai également essayé d'envelopper la réécriture dans if ($scheme ~* http){
en vain.
L'autre partie de ma question est que j'aimerais supprimer www de l'URL, puis-je faire cela avec une seule réécriture? La réécriture ci-dessus ne devrait-elle pas prendre en charge cela aussi?
Merci pour ton aide!
sciurus est correct dans les équilibreurs de la charge en nuage de racks définissant le proto à transfert de X à HTTPS lorsque SSL est déchargé à l'équilibreur de charge. Afin d'éviter une boucle de redirection dans NGinx, vous devriez pouvoir ajouter ce qui suit à la section location
dans la configuration VHOST:
if ($http_x_forwarded_proto = "http") {
rewrite ^/(.*)$ https://mydomain.com/$1 permanent;
}
Cela devrait éviter la boucle de redirection infinie tout en redirigeant des demandes non-HTTPS à HTTPS.
L'équilibreur de charge vous parle toujours sur http. Ce qui se passe est
Les étapes 2-4 continuent à répéter jusqu'à ce que le navigateur détecte la boucle de redirection et abandonne.
Edit: Pour résoudre ce problème, effectuez uniquement la réécriture lorsque l'en-tête X-Forwarded-proto est défini sur HTTP. Cet en-tête correspond à la manière dont l'équilibreur de charge de Rackspace indique à votre serveur Web le protocole via lequel il a reçu la demande.