Ich habe eine skalierbare EB (Elasticbeanstalk) Schienen (Puma) -Instanz bereitgestellt. Ich habe https über ACM (Amazon Certificate Manager) beantragt und auf meinen Load Balancer angewendet. HTTPS ist jetzt für meine Website aktiviert. Aber wie erzwinge ich Umleitung zu https? Ich habe eine Reihe von Online-Lösungen ausprobiert, bei denen vorgeschlagen wurde, eine Nginx-Konfiguration manuell über .exitextensions vorzunehmen und ich bin nicht sicher, wo ich das Zertifikat von ACM bekommen könnte (ich gehe davon aus, dass das mit ACM momentan nicht möglich ist?)). Wie erzwinge ich HTTPS?Erzwingen von https in elasticbeanstalk mit Zertifikat von ACM
Antwort
Die aktuellen AWS EB Rails und Node.js Setups sowohl Verwendung nginx (wenn Ihr Webserver Apache ist this answer sehen), so sollte folgendes (von this question angepasst) arbeiten:
Erstellen Sie die Datei .ebextensions/01-force-https.config
(die .config
ist wichtig, nicht .conf
) mit dem folgenden Inhalt.
Wenn Ihre Umgebung eine einzelne Instanz ist:
files:
"/etc/nginx/conf.d/01-force-https.conf":
owner: root
group: root
mode: "000644"
content: |
server {
listen 8080;
return 301 https://$host$request_uri;
}
Wenn Ihre Umgebung Last ausgeglichen ist, man kann leider nicht einfach auf die vorhandene Konfiguration hinzuzufügen, aber müssen es mit sed ändern:
files:
"/tmp/45_nginx_https_rw.sh":
owner: root
group: root
mode: "000644"
content: |
#! /bin/bash
CONFIGURED=`grep -c "return 301 https" /opt/elasticbeanstalk/support/conf/webapp_healthd.conf`
if [ $CONFIGURED = 0 ]
then
sed -i '/listen 80;/a \ if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }\n' /opt/elasticbeanstalk/support/conf/webapp_healthd.conf
logger -t nginx_rw "https rewrite rules added"
exit 0
else
logger -t nginx_rw "https rewrite rules already set"
exit 0
fi
container_commands:
00_appdeploy_rewrite_hook:
command: cp -v /tmp/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/appdeploy/enact
01_configdeploy_rewrite_hook:
command: cp -v /tmp/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/configdeploy/enact
02_rewrite_hook_perms:
command: chmod 755 /opt/elasticbeanstalk/hooks/appdeploy/enact/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/configdeploy/enact/45_nginx_https_rw.sh
03_rewrite_hook_ownership:
command: chown root:users /opt/elasticbeanstalk/hooks/appdeploy/enact/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/configdeploy/enact/45_nginx_https_rw.sh
Dann füge es zu deinem Git Repo oder App Bundle und eb deploy
hinzu. Dies erzeugt /etc/nginx/conf.d/01-force-https.conf
, die automatisch von /etc/nginx/nginx.conf
aufgenommen wird. Beachten Sie, dass eb deploy
die Datei auf dem Server nicht löscht, wenn Sie später die entsprechende Datei aus .ebextensions
entfernen. Auch ich fand die folgenden hilfreich bei der Fehlersuche durch eb ssh
:
sudo service nginx configtest
sudo service nginx restart
Danke! Gute Antwort – thomasstephn
Ich folgte dieser http://msnider.github.io/blog/2013/12/06/force-https-slash-ssl-on-amazon -elastische Bohnenstange/und es hat funktioniert. Möglicherweise müssen Sie den Server manuell neu starten, damit er funktioniert. oder einfach nur hochladen und bereitstellen. Ich erinnere mich auch vage daran, meinen Load-Balancer meiner Domain zuordnen zu müssen, damit mein Cert funktioniert, aber das könnte daran liegen, dass ich ein Extended-Validierungs-Cert gekauft habe. – vath
Es scheint, dass das Internet sich nicht auf eine einzige, vollständige und funktionierende Lösung für dieses Problem einigen kann. Hoffentlich können Sie Hilfe [hier in meinem Beitrag] (http://thehunk.blogspot.in/2017/11/how-to-force-redirect-http-to-https-in.html) bekommen. Ich musste durch die Reifen springen, um endlich zu kommen. – ADTC