Django アプリを開発し、メインの PHP ベースのサイトと同じサーバーから提供する方法についての元のDjango サービス提供に関する質問からのフォローアップの質問があります (静的および PHP 駆動型のウェブサイトからの私のウェブサイトの大規模な移行のすべての部分)。一連の Django アプリに)。
提供されたネーム サーバー ソリューションをまったく使用できず、代わりに mod_wsgi を使用して Django アプリケーションを別のポート (8000) にデプロイしました。しかしここで、実際に Django アプリケーションをメイン サイトに統合する必要があります。私の Apache 2.0 構成ファイル (たとえばhttp://www.example.com ) に、次の ProxyPass コマンドを追加しました (mod_wsgi の初期化後)。
ProxyPass /app/newsletter http://www.example.com:8000/app/newsletter
ProxyPassReverse /app/newsletter http://www.example.com:8000/app/newsletter
ここで、リクエストは次のことを期待しています。
http://www.example.com/app/newsletter
正常にプロキシされます:
http://www.example.com:8000/app/newsletter
そして、すべてが世界でうまくいくでしょう。
しかし、そうではありません。Apache が 5 分ほど (この質問を作成するのにかかった時間) ハングし、 502 Proxy Errorを吐き出します。
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /app/newsletter/.
Reason: Error reading from remote server
この応答の後に Apache 2.0 エラー ログを見ると、次のような継続的なエラーが表示されます。
[Thu Sep 27 15:25:49 2012] [error] Exception KeyError: KeyError(****,) in <module 'threading' from '/usr/lib64/python2.6/threading.pyc'> ignored
そのため、mod_proxy が Django や Python とどのように連携するかについて、何かが見落とされているようです。ProxyPass と ProxyPassReverse を使用する他の Java 関連プロセスがあり、正常に動作します。また、ProxyPass を適用しようとしない場合、Django アプリはすべて正常に動作します (つまり、ポート 8000 で直接アドレス指定した場合)。
何か案は?私がやっていることは特に複雑だとは思いません。
前もって感謝します。