我有我的原始Django serving question後續問題,這是如何開發Django應用程序,並從我的主要基於PHP的網站服務於他們(我的網站的一個較大的遷移的所有部分從一個靜態和PHP驅動的應用程序到一系列Django應用程序)。ProxyPass和ProxyPassReverse爲Django應用程序
我無法完全使用我提供的名稱服務器解決方案,而只是使用mod_wsgi在不同端口(8000)上部署我的Django應用程序。但是,現在我需要將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
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中扮演的角色似乎有些失職。我有其他Java相關的進程,我使用ProxyPass和ProxyPassReverse,他們工作正常。另外,當我不嘗試應用ProxyPass時,Django應用程序一切正常(即,當我直接在端口8000上處理它們時)。
任何想法?我不覺得我所做的事情特別複雜。
在此先感謝。
它已被推薦給我,因爲一切都在同一臺服務器上,我應該使用mod_rewrite而不是mod_proxy。 – tatlar