J’ai une application django hébergée dans docker elastic beanstalk, qui utilise nginx. Pour SSL, j’utilise un certificate aws. Pour redirect http vers https, j’ai essayé “x_forwarded_proto” avec le nginx dans le conteneur docker mais je reçois une erreur 502. voici la configuration nginx:
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; # } }
Quelqu’un peut-il suggérer une meilleure solution pour cela.
Trouvé une solution pour cela, il suffit d’append
if ( $http_x_forwarded_proto != 'https' ) { return 301 https://$host$request_uri; }
à la configuration nginx de l’instance eb.
C’est vraiment une question nginx (ajoutez la balise appropriée).
Votre configuration semble compliquée. Commencez par celui-ci à la place. C’est ce que j’utilise pour redirect le trafic du port http 80 vers le trafic du port TLS / SSL 443.
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; } }