0

Apache 2.4、mod_wsgi 3.4、および Python 2.7 で実行されている Python アプリケーションを継承しました。同じアプリケーションが HTTP 要求と HTTPS 要求の両方を処理します。

既存のコードでは、環境をチェックしてリクエストが HTTPS であるかどうかを判断しようとしています。

if context.environ.get('HTTPS') not in ['on', '1']:

接続が実際には HTTPS であった場合でも、このチェックは失敗します。環境変数を示す拡張トレースバックを見ると、HTTPS実際には Apache から渡された環境にないことがわかりました。

だから私の質問は:

  • これは Apache の設定の問題ですか?
  • このチェックは完全に間違っているので、別のものをチェックするように書き直す必要がありますか? もしそうなら、何?
  • それとも、あきらめて、本当にやりたいように Apache を nginx に置き換える必要がありますか?
4

2 に答える 2

3

Apacheは環境変数mod_sslを設定するように構成できますが、パフォーマンス上の理由からデフォルトではそうしません。HTTPS

明示的に有効にすることもできますが、WSGI アプリケーションを使用しているため、wsgi.url_scheme代わりに環境変数を確認することをお勧めします。WSGI 仕様はその存在を保証しており、最終的に nginx に移行したとしても、アプリケーションをさらに変更する必要はありません。

于 2013-02-24T08:02:19.217 に答える
0

CGI、WSGI、または SSI を使用する場合、ヘッダーを送信するように Apache に通知する必要がありますHTTPS。そうしないと、ヘッダーは空になります。config または .htaccess のmod_envでこれを行うことができます

<IfModule mod_env.c>
   SetEnv HTTPS on
</IfModule>
于 2013-02-24T07:58:08.220 に答える