0

Djangoを企業のイントラネットにインストールし、mod_wsgiを使用してApacheで実行しています。ApacheサーバーにはSSLが設定されており、ユーザーがCGIページにアクセスするとすべてが期待どおりに機能しますが、私のdjangoアプリケーションはSSL関連の環境変数(ssl_client_s_dnなど)を取得していないようです。 http://またはhttps://。

主な問題は、djangoがos.environをどこから取得しているのか、そしてそれをどのように変更するのかがわからないことだと思います。「django」と「ssl」に関する公式のdjangoドキュメントやその他の投稿を調べましたが、これらはhttp、場合によってはhttpsである必要があるビューを扱っているようです。os.environに表示されるSSL関連の情報を取得しようとしていますが、次にどこを見ればよいのかわかりません。

あなたは何を知る必要がありますか?httpd.conf wsgi構成設定?私のプロジェクトsettings.py、またはwsgi.pyの行?

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

4

1 に答える 1

2

Apache内で使用していてmod_wsgi、Apacheで環境変数を設定した場合(を使用してSetEnv)、運が悪いことになります。mod_wsgiの環境変数は、Apacheの環境変数とは別のものです。

多くの人が同様の問題に直面しています。DjangoSetEnvでアクセスしようとすると、Apacheで変数を設定することは完全に見えませんos.environ

ただし、いくつかの解決策があります。これはここにリストされており、基本的にwsgiスクリプトのこれらの行に表示されます(ニーズに合わせて調整されます)。

def application(environ, start_response):
    os.environ['ssl_client_s_dn'] = environ['ssl_client_s_dn']
    return _application(environ, start_response)

os.environこれは基本的に、WSGIアプリケーションの最初の引数を辞書に変換します。詳細については、上記のリンク先の投稿を参照してください。

于 2012-08-15T14:38:29.733 に答える