Ich weiß, dass diese Frage schon einmal gestellt wurde, aber nichts scheint für mich zu arbeiten. Ich habe mehrere verschiedene Dinge ausprobiert, wie die in diesen Fragen beschrieben Antworten:Elastische Bohnenstange Http Umleiten zu Https
How to get Elastic Beanstalk nginx-backed proxy server to auto-redirect from HTTP to HTTPS? Redirecting EC2 elb from http to https
Keiner von ihnen zu arbeiten scheinen. Ich bin ein Aws Noob, also bin ich mir nicht ganz sicher, wie das Bearbeiten von Konfigurationsdateien funktioniert - oder ob ich etwas falsch gemacht habe.
Mein Setup ist folgende:
- Route 53 Punkte Elastic Beanstalk (nginx)
- ELB port configuration with ACM certificate (unter Verwendung von TCP/ssl wie es meine WebSockets macht Arbeit)
- NodeJS App auf Port 8080
Meine aktuelle nginx.config Datei in meinem .ebextensions Ordner (habe diese von this article):
012.351.files:
"/tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf" :
mode: "000755"
owner: root
group: root
content: |
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
server {
listen 8080;
set $fixedWWW '';
set $needRedir 0;
# nginx does not allow nested if statements
# check and decide on adding www prefix
if ($host !~* ^www(.*)) {
set $fixedWWW 'www.';
set $needRedir 1;
}
# what about that https? the traffic is all http right now
# but elastic load balancer tells us about the original scheme
# using $http_x_forwarded_proto variable
if ($http_x_forwarded_proto != 'https') {
set $needRedir 1;
}
# ok, so whats the verdict, do we need to redirect?
if ($needRedir = 1) {
rewrite ^(.*) https://$fixedWWW$host$1 redirect;
}
location/{
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
gzip on;
}
Aber das scheint nichts zu tun. Mir sind die Ideen ausgegangen. Ich bin mir nicht sicher, ob mir ein Schritt oder etwas fehlt, aber ich weiß nicht, was ich tun soll. Als Workaround habe ich meine Angularjs-Front-End-Umleitung Non-https-Anfragen, aber das ist zu hacky und einige der DOM-Rendern vor der Umleitung, würde ich gerne auf dem Load Balancer umleiten - wo es umleiten sollte.
Auf einen Blick Ihre Nginx Konfiguration korrekt aussieht. Es prüft den Header x-forwarded-proto und leitet, falls nicht, 'https' um. Es sieht so aus, als würden Sie auch von der nackten Domain zur www-Subdomain umleiten, funktioniert das? Sind Sie sicher, dass die nginx-Konfiguration tatsächlich auf Ihre BeanStalk-Server angewendet wird? –
Ich habe gerade die nackte Domäne auf www in Route 53 gezeigt, und dann zeigt das www auf EB. Diese Überprüfung ist im Moment überflüssig. Wie überprüfe ich, ob diese Datei die Standarddatei überschreibt? – KDogg
[Was hast du KDogg gemacht] (https://xkcd.com/979/) ?? Ich habe das gleiche Problem! –