2016-09-27 7 views
2

私はnginxを使用するdockerの弾力のあるbeanstalkでホストされているdjangoアプリケーションを持っています。 SSLの場合私はaws証明書を使用しています。 httpをhttpsにリダイレクトするには、ドッカーコンテナ内にtrhe nginxを入れて "x_forwarded_proto"を試しましたが、502エラーが表示されます。ここにはnginxの設定があります:nginxのdockerの弾力のあるbeanstalkのhttpをhttpsにリダイレクトする方法

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; # 
    } 
} 

誰かがそれに対してより良い解決策を提案できますか?

答えて

2

はちょうどEBインスタンスのnginxの構成に

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

を追加し、そのための解決策を見つけました。

0

これは本当にnginx質問です(適切なタグを追加してください)。

あなたの設定は複雑です。代わりにこの1つから開始してください。これは、httpポート80トラフィックを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; 
    } 
} 
+1

通常、httpをhttpsにリダイレクトするためにこれを使用できます。しかし、私はAWS Certificate ManagerからSSL証明書を使用しています。だから私はエラーを引き起こすnignxの設定でssl証明書の場所を定義することはできません。私はこのブログに続いた https://www.uvd.co.uk/blog/using-aws-certificate-manager-nginx/ – Nijo

関連する問題