2012-07-27 10 views
5

CentOS 6マシンにNginx/Gunicorn/Djangoサーバーを展開しており、SSLポート(443)のみが外部から見えます。したがって、サーバがhttps://で呼び出されない限り、何の応答も得られません。 http://domain:443で呼び出すと、400 Bad Requestメッセージが表示されます。ポート443は、サーバーにヒットする唯一の方法です。Nginx/Django管理POST httpsのみ

Nginxを使用して静的ファイル(CSSなど)を提供しています。他のすべてのリクエストはDjangoを実行中のGunicorn(http://localhost:8000)が処理しています。したがって、https://domain.comへのナビゲートは管理サイト内のリンクと同様にうまくいきますが、Django管理者のフォームを送信すると、httpsはリダイレクトで失われ、http://domain.com/ request_uriに送信され、サーバーに届きません。 POSTアクションは正常に動作し、データベースは更新されます。

設定ファイルは以下のとおりです。場所location /セクションは、解決策が見つかるはずの場所です。しかし、proxy_set_header X-*ディレクティブの効果はありません。私はモジュールや何かを紛失していますか?私はnginx/1.0.15を実行しています。

インターネット上で私が見つけることができるものは、何かをしなければならないのと同じようにX-Forwarded-Protocol httpsにありますが、変更はありません。また、リモートサーバでデバッグを行うこともできませんが、私の次のステップはデバッグを有効にしてローカルでコンパイルする必要があります。最後の手段はポート80を公開してすべてをリダイレクトすることですが、それには書類作成が必要です。

[http://pastebin.com/Rcg3p6vQ](My nginxの設定引数)

server { 
    listen  443 ssl; 

    ssl on; 
    ssl_certificate /path/to/cert.crt; 
    ssl_certificate_key /path/to/key.key; 
    ssl_protocols  SSLv3 TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   HIGH:!aNULL:!MD5; 

    server_name example.com; 

    root /home/gunicorn/project/app; 
    access_log /home/gunicorn/logs/access.log; 
    error_log /home/gunicorn/logs/error.log debug; 

    location /static/ { 
     autoindex on; 
     root /home/gunicorn; 
    } 

    location/{ 
     proxy_pass http://localhost:8000/; 
     proxy_redirect off; 
     proxy_set_header Host $host; 
     proxy_set_header X-Scheme $scheme; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Protocol https; 
    } 

} 

答えて

2

は、次の2行は何をすべきかを正確に理解するためにはまだ時間がありませんでしたが、私の問題をそれらを解決し削除します:

proxy_redirect off; 
    proxy_set_header Host $host; 
関連する問題