2016-09-27 2 views
2

Ich habe Django-Anwendung in Docker elastische Bohnenstange gehostet, die nginx verwendet. Für SSL benutze ich ein Zertifikat von aws. Um http zu https umzuleiten versuchte ich "x_forwarded_proto" mit trhe nginx innerhalb des Docker-Containers, aber ich bekomme einen Fehler 502. Hier ist die Nginx-Konfig:wie ich http zu https in nginx Docker elastische Bohnenstange umleiten

server { 

listen  80 default_server; 

server_name www.example.com; 

access_log /home/docker/logs/nginx-access.log; 
error_log /home/docker/logs/nginx-error.log; 


if ($host !~* ^(www.example.com|example.com)$) { 
    return 444; 
} 

if ($http_x_forwarded_proto != 'https') { 
return 301 https://$host$request_uri; 
} 

location/{ 
    uwsgi_pass unix:/var/sockets/api.sock; 
    include /home/docker/server/uwsgi_params; # 
    } 
} 

Kann jemand eine bessere Lösung dafür vorschlagen.

Antwort

2

eine Lösung dafür gefunden, nur

if ($http_x_forwarded_proto != 'https') { 
return 301 https://$host$request_uri; 
} 

auf die nginx Konfiguration der Instanz eb hinzuzufügen.

0

Dies ist wirklich eine Nginx Frage (fügen Sie das richtige Tag hinzu).

Ihre Konfiguration scheint kompliziert. Beginne stattdessen mit diesem. Das ist, was ich verwende, um HTTP-Port 80-Verkehr zu TLS/SSL-Port 443-Verkehr umzuleiten.

access_log /home/docker/logs/nginx-access.log; 
error_log /home/docker/logs/nginx-error.log; 

server { 
    listen 80; 
    server_name www.example.com; 

    return 301 https://$host$request_uri; 
} 

server { 
    listen  443 ssl; 
    server_name www.example.com; 

    location/{ 
     root /usr/share/nginx/html; 
     index index.html; 
    } 
} 
+1

normalerweise können wir dies verwenden, um http zu https umzuleiten. Aber ich verwende SSL-Zertifikate von AWS Certificate Manager. Daher kann ich den Speicherort des SSL-Zertifikats in der nignx-Konfiguration nicht definieren, was zu Fehlern führt. Ich folgte diesem Blog https://www.uvd.co.uk/blog/using-aws-certificate-manager-nginx/ – Nijo

Verwandte Themen