Je souhaite rediriger toute la requête HTTP vers la requête https sur ELB . J'ai deux instances EC2. J'utilise nginx pour le serveur. J'ai essayé de réécrire les fichiers nginx conf sans aucun succès. J'aimerais avoir des conseils à ce sujet.
redirect
nginx
amazon-ec2
https
amazon-elb
Amit Badheka
la source
la source
Réponses:
Les AWS Application Load Balancers prennent désormais en charge la redirection native HTTP vers HTTPS.
Pour activer cela dans la console, procédez comme suit:
La même chose peut être obtenue en utilisant la CLI comme décrit ici .
Il est également possible de le faire dans Cloudformation, où vous devez configurer un objet Listener comme celui-ci:
Si vous utilisez toujours les Classic Load Balancers, optez pour l'une des configurations NGINX décrites par les autres.
la source
instances
tabulation)ELB définit l'en-
X-Forwarded-Proto
tête, vous pouvez l'utiliser pour détecter si la demande d'origine était vers HTTP et rediriger vers HTTPS ensuite.Vous pouvez essayer ceci dans votre
server
conf:Jetez un œil à la documentation ELB .
la source
nginx
configuration, mais le principe est applicable à n'importe quel serveur Web.J'ai eu le même problème, dans ma situation, HTTPS était entièrement géré par ELB et je ne connaissais pas mon domaine source à l'avance, alors j'ai fini par faire quelque chose comme:
Et puis bien sûr pointant l'ELB 'https' vers le port d'instance 80, puis la route 'http' vers le port d'instance 81.
la source
Amazon Elastic Load Balancer (ELB) prend en charge un en-tête HTTP appelé X-FORWARDED-PROTO. Toutes les requêtes HTTPS passant par l'ELB auront la valeur X-FORWARDED-PROTO égale à «HTTPS». Pour les requêtes HTTP, vous pouvez forcer HTTPS en ajoutant la règle de réécriture simple suivante. Pour moi, cela fonctionne bien!
Apache
Vous pouvez ajouter les lignes suivantes dans votre fichier .htaccess:
Ou si vous utilisez vhost.conf pour gérer plusieurs domaines dans le même serveur Web EC2, vous pouvez ajouter ce qui suit au vhost.conf (ajoutez-le au domaine que vous souhaitez utiliser https pour cela):
IIS
Installez le module IIS Url-Rewrite, en utilisant l'interface graphique de configuration, ajoutez ces paramètres:
En savoir plus ici
la source
RewriteCond %{HTTP:X-Forwarded-Proto} !(https|^$)
Les solutions htaccess ci-dessus ont provoqué l'échec de la vérification de l'état ELB. J'ai eu du mal à trouver la solution jusqu'à ce que je découvre un article en ligne dans lequel quelqu'un avait les mêmes problèmes que moi. Sa solution était d'ajouter ceci au début du fichier htaccess à la place:
Source: redirection de HTTP vers HTTPS avec AWS et ELB
la source
Ce n'est peut-être pas la solution que vous recherchez, mais une autre option pourrait être d'utiliser AWS CloudFront en plus d'ELB. CloudFront offre la possibilité de rediriger tout le trafic HTTP entrant vers HTTPS.
la source
J'ai eu un problème étrange avec la configuration nginx et ELB. Ma configuration comprenait 3 services différents à l'intérieur d'un nginx derrière ELB. Et j'ai eu un problème de contenu mixte: lorsque votre demande à ELB est https, mais à l'intérieur d'ELB http uniquement, et que le serveur crée un chemin relatif vers statique en utilisant http, le navigateur échoue donc avec un problème de `` contenu mixte ''. Et je dois créer une solution pour que les deux http / https fonctionnent sans aucune redirection.
Voici la configuration située dans le
nginx/conf.d/
dossier:Cela signifie que nous saurons ce qu'est le véritable protocole client. Comme vous pouvez le voir, nous l'aurons dans
$switch
var. Et en ce moment, vous l'utilisez dans tous les endroits où vous en avez besoin:Avec le paramètre HTTPS, l'application php détectera automatiquement le bon protocole et construira soigneusement le chemin relatif pour éviter les problèmes de contenu mixte.
Meilleures salutations.
la source
Basé sur la réponse de @ Ulli Si vous souhaitez le configurer avec Terraform , voici un exemple>
La source
la source
Créez un fichier
.ebextensions/00_forward_http_to_https.config
avec le contenu suivant:Assurez-vous de définir au préalable la variable d'environnement APP_URL à partir de la console de gestion AWS.
la source