我正在從Apache中的Django FastCgi安裝程序遷移到lighttpd中的一個。lighttpd mod_rewrite與Apache Django和FastCGI的mod_rewrite
在Apache上,我使用的是Django文檔中描述的fcgi配置。其核心部分是重寫我的所有非靜態網址被/mysite.fcgi/$1:
RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]
,然後進行轉發的FastCGI /mysite.fcgi所有請求:
<IfModule mod_fastcgi.c>
FastCGIExternalServer /opt/www/mysite.fcgi -host 127.0.0.1:8000
</IfModule>
的設置工作爲Django。例如,如果我去了http://www.mydomain.com/help/
,並在模板中打印了{{ request.get_full_path }}
,結果爲/help/
。生活很好,我很開心。但是,我遇到了一些問題,這些問題迫使我轉向支持更多併發連接的Web服務器,而不是Apache可以給我的。
快進到lighttpd。所有配置都很好。我重寫我的網址與mod_rewrite的:
一次url.rewrite-=( 「^(/媒體/ )$」=> 「$ 1」, 「^/favicon.ico的$」=>「/ MED/IMG /圖標/ favicon.ico的」, 「^(/。)$」=> 「/mysite.fcgi$1」, )
和已處理的FastCGI /mysite.fcgi:
fastcgi.server = (
"/mysite.fcgi" => (
"main" => (
"host" => "127.0.0.1",
"port" => 8000,
"check-local" => "disable",
)
),
)
事情一般工作,我的Django網站運行良好。但是當我去http://www.mydomain.com/help/
並在模板中打印{{ request.get_full_path }}
時,結果是/mysite.fcgi/help/
。這會導致一些問題。
雖然這並不會導致問題,因爲Django網站運行良好,但它在使用SSL時會造成問題。具體來說,我使用來自http://www.djangosnippets.org/snippets/240/的「Stephen Zabel - [email protected]」的sslmiddleware。這個軟件依賴於request.get_full_path,它在lighttpd下返回一個不同於Apache下的值。 request.path相同。
任何人都可以提出一個解決這個問題的方法嗎?理想情況下,我希望lighttpd mod_rewrite與Apache下的mod_rewrite具有相同的行爲。如果不行,我想要一個lighttpd FastCGI Django安裝程序,它將與我正在使用的sslmiddleware軟件包兼容。或者,我可以將sslmiddleware包更改爲與來自lighttpd的mod_rewrite重寫URL的方式兼容。
這個答案將會成爲夢幻般的30歲生日禮物!
你是從trunk還是一些穩定版本使用Django?我有幾乎相同的lighttpd配置和「request.get_full_path」如你所願。 – Glader 2009-07-10 03:17:00