Configurer apache sur beanstalk élastique
Je suis en développement avec django sur elastic beanstalk et je veux faire deux changements de configuration d'apache:
1.
redirection www.domain.com pour domain.com
2.
rediriger http://domain.com à https://domain.com
Je n'ai pas d'expérience avec la configuration d'apache, googler il m'a donné l'idée que je devrais mettre les RewriteRules .fichier htaccess.
exemple:
Comment faire pour forcer le https sur amazon elastic beanstalk sans omettre le bilan de santé
Je ne pouvais pas trouver des instructions sur la façon de le faire avec elastic beanstalk de configuration (.ebextensions), j'ai essayé de mettre simplement un .fichier htaccess dans la racine de mes filder et déployer mais il ne fonctionne pas.
Personne ne sait comment il est possible d'ajouter les RewriteRules dans elastic beanstalk?
source d'informationauteur Dan Bolofe
Vous devez vous connecter pour publier un commentaire.
c'est une solution facile
Modifier la version locale de wsgi.conf et d'ajouter la redirection suivant les règles au sein de l' < VirtualHost> < /VirtualHost> les tags
Changer le “/statut” pour quelle que soit la page que vous utilisez comme un bilan de santé de la page.
Modifier votre < app>.fichier conf à l'intérieur de votre .ebextensions répertoire pour ajouter un conteneur de commande pour copier cette version de wsgi.conf sur Amazon version
Déployer le code.
Il doit travailler et le fichier sera mis à jour correctement pour chaque déploiement. La seule chose à surveiller est si Amazon changements de leur base de wsgi.conf contenu du fichier dans l'avenir, votre copie peut ne plus fonctionner.
Source : rickchristianson
Avoir
www.example.com
aller àexample.com
peut être fait avec un CNAME DNS si vous ne se soucient pas de l'avoir réellement une redirection. Si vous avez besoin d'une redirection, vous pouvez l'ajouter à la config d'Apache ci-dessous. Le point principal de cette réponse est d'en détail comment modifier la configuration d'Apache sur Elastic Beanstalk (parce que faire cela n'est pas très simple).Cette réponse suppose que vous avez déjà activé le https dans l'équilibrage de la charge de la sécurité du groupe, a ajouté le certificat SSL pour l'équilibrage de charge, a ajouté 443 pour les ports transmis par l'équilibrage de charge, et de relever votre nom de domaine à l'Elastic Beanstalk environnement avec Route 53 (ou l'équivalent de service de DNS).
Tout ce que vous devez faire est d'ajouter les éléments suivants à l'un de vos
.conf
fichiers.ebextensions
dans le répertoire de votre projet:Explication
C'est moyennement droite de l'avant à l'extérieur de Elastic Beanstalk. On ajoute généralement une règle de réécriture Apache comme suit:
Ou, si derrière un répartiteur de charge, comme nous sommes dans ce cas:
Cependant, ces configurations ne fonctionne qu'au sein d'un
<VirtualHost>
bloc. La modification de laRewriteCond
à un<If>
bloc permet de travailler correctement à l'extérieur d'un<VirtualHost>
bloc, ce qui nous permet de mettre dans un autonome fichier de configuration d'Apache. Notez que standard d'Apache installation sur CentOS (y compris l'installation sur ElasticBeanstalk) inclut tous les fichiers correspondant à/etc/httpd/conf.d/*.conf
qui correspond au chemin du fichier où sont stockés dans ce dossier.La
-n '%{HTTP:X-Forwarded-Proto}'
partie de la condition l'empêche de redirection si vous n'êtes pas derrière un répartiteur de charge, vous permettant de configuration partagée entre un environnement de production avec un équilibreur de charge et https, et une mise en scène de l'environnement qui est l'instance unique et n'a pas de https. Ce n'est pas nécessaire si vous utilisez des équilibreurs de charge et https sur l'ensemble de vos environnements, mais il ne fait pas de mal à l'avoir.De mauvaises solutions, j'ai vu
J'ai vu beaucoup de mauvaises solutions à ce problème, et il vaut la peine de passer par eux pour comprendre pourquoi cette solution est nécessaire.
Utilisation Cloudfront: Certaines personnes suggèrent d'utiliser non mis en cache Cloudfront installation en face de Elastic Beanstalk pour faire la redirection HTTP vers HTTPS. Cela ajoute un tout nouveau service (donc en ajoutant de la complexité) qui n'est pas exactement approprié (Cloudfront est un CDN; ce n'est pas le bon outil pour forcer le HTTPS sur inherantly contenu dynamique). De configuration d'Apache est la solution normale pour ce problème et Elastic Beanstalk utilise Apache, de sorte que c'est la façon dont nous devrions aller.
SSH sur le serveur et de...: Ce qui est totalement contraire à la point de Elastic Beanstalk et a beaucoup de problèmes. Toutes les nouvelles instances créées par la mise à l'échelle automatique n'aurez pas la configuration modifiée. Tout cloné environnements de ne pas avoir la configuration. N'importe quel nombre d'un ensemble raisonnable de changements de l'environnement pour effacer la configuration. C'est juste une mauvaise idée.
Remplacer la config d'Apache avec un nouveau fichier: C'est d'entrer dans le droit domaine de la solution, mais vous laisse avec un entretien cauchemar si Elastic Beanstalk changements aspects de la configuration du serveur (qui peut très bien le faire). Voir aussi les problèmes dans le point suivant.
Dynamiquement modifier le fichier de configuration d'Apache pour ajouter quelques lignes: C'est un bon idée. Le problèmes c'est que cela ne fonctionnera pas si Elastic Beanstalk change le nom par défaut du fichier de configuration d'Apache, et que ce fichier peut être remplacé lorsque vous y attendez le moins: https://forums.aws.amazon.com/thread.jspa?threadID=163369
Juste pour la référence, pour les autres, à l'aide de Zags " solution pour rediriger les non-www www, ajoutez ceci à votre
.ebextensions/your_file.config
: