2017-07-17 10 views
1

私はdjangoフレームワークでWebアプリケーションを持っており、サイトを提供するためにnginxサーバをセットアップしました。私もサイトにSSLをセットアップしました。このサイトはhttpとhttpsの両方で正常に動作します。nginxサーバでhttpsに誘導した後ウェブサイトが応答しなくなる

私のユーザーが常にセキュアバージョンを使用するように、すべてのhttp要求をhttpsに送信したいと思います。ここで

は私のnginxの設定ファイルである:私はhttpsに301リダイレクトを挿入し、サーバーを再起動したときに

server { 
    listen 80; 
    listen 443 ssl; 
    server_name site.com www.site.com; 
    ssl_certificate /path/to/SSL; 
    ssl_certificate_key /path/to/SSL/key; 
    location = /favicon.ico { access_log off; log_not_found off; } 
    location /site_media/static/ { 
     alias /home/user/folder/static/dist/; 
    } 
    location/{ 
     include   uwsgi_params; 
     uwsgi_pass  unix:/tmp/site.sock; 
    } 
} 

は今、サイトが応答しなくなります。この問題を解決するためにどのように私の

server { ... } 

任意のアイデアへの

return   301 https://$server_name$request_uri; 

、任意の提案が高く評価されるだろう。

答えて

2

保護されていないreturnステートメントをサーバーブロックに配置すると、httpサイトとhttpsサイトの両方がリダイレクトされ、ループが発生します。あなたはifブロック内return文を置き、プロトコルがhttpsない、またはより一般的な解決策は、例えば、2つのserverブロックにわたって構成が分割されたときに検出することができた:

server { 
    listen 80; 
    server_name site.com www.site.com; 
    return 301 https://$host$request_uri; 
} 
server { 
    listen 443 ssl; 
    server_name site.com www.site.com; 
    ssl_certificate /path/to/SSL; 
    ssl_certificate_key /path/to/SSL/key; 
    location = /favicon.ico { access_log off; log_not_found off; } 
    location /site_media/static/ { 
     alias /home/user/folder/static/dist/; 
    } 
    location/{ 
     include   uwsgi_params; 
     uwsgi_pass  unix:/tmp/site.sock; 
    } 
} 
+0

それは働きます!ありがとうございました! :) – Elisha512

関連する問題