6

Django ベースのアプリケーションに Ngnix + uWSGI セットアップを使用しています。

私たちの問題は、https でコンテンツを提供しているにもかかわらず、request.is_secure()常にfalseを返すことです。

uWSGI のドキュメントに記載されているようにuwsgi_param UWSGI_SCHEME $scheme、nginx の構成または uwsgi_params で設定しましたが、役に立ちません。

同じアプリケーション用にNginx + apacheベースのセットアップもあり、問題なく動作します。

どんな助けでも大歓迎です。

前もって感謝します。

4

5 に答える 5

6

gunicornサーバーの場合:

nginx.conf次の行をファイルに追加します。

proxy_set_header        X-Forwarded-Proto           $scheme;

settings.pyそして、次の行をファイルに追加します。

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
于 2019-04-27T14:38:08.703 に答える
6

問題が解決しました !!

修正するためにいくつかのことを試みましたが、機能させることができませんでした。後で分析した問題について、さらに詳しい情報をここに記載します。webfaction の現在の設定は次のようになります。

WebFaction Nginx -> 当社の nginix -> uwsgi サーバー

Webfaction nginx の構成に問題があり、(https および http) のすべてのトラフィックを http プロトコル自体で nginx に渡していることがわかりました。そのため、最初にこの設定を変更して、適切なトラフィックを適切なサーバーに渡すようにしました。

それでも、両方の nginx サーバーによって設定された $scheme が正しくないことが判明したため、最終的に行ったことは、https 構成の nginx で次のように設定することです。

uwsgi_param UWSGI_SCHEME https;

これで問題は解決しました。

于 2012-07-12T11:50:51.537 に答える
4

私はこの問題を解決するのに半日かかりました。

まず、

設定

uwsgi_param   HTTP_X_FORWARDED_PROTO    $scheme;

nginx.conf で

次に、この行を settings.py にドロップします

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

Django <1.4 を使用している場合は、django-secureミドルウェアも有効にする必要があります

于 2015-01-19T10:13:09.333 に答える
3

現在プロトコルを使用しているかどうかを確認するrequest.scheme代わりに使用することをお勧めします。request.is_secure()https

于 2016-12-06T17:54:08.700 に答える
1

nginxはhttpsターミネーターですか、それともその前に他のサーバーがありますか?

このような場合、nginxの$scheme変数は常に「http」にマップされます。手動で「https」に設定する必要があります

uwsgi_param UWSGI_SCHEME https;

于 2012-07-12T03:50:05.360 に答える