2009年6月5日 星期五

lighttpd web server - configure 篇 (issues)

其實在一個embedded system裡,要用lighttpd來達到所有web ui的工作,真的還滿複雜的,這裡說一下我所遇到的難題。

1. FireWare upgrade:
在案子開發初期,要能有FW upgrade功能是一定要的!! 但很其怪的是,我cgi那裡,明明就有很明確的把要lighttpd從client那裡要檔案,但為什麼總是傳一傳就斷了呢?! 我想了半天,也許是lighttpd本身default的最大上傳檔案size有限制,所以我在 lighttpd.conf裡,加了以下:

server.max-request-size = 900000000
server.network-backend="write"
server.upload-dirs=( "/tmp" )

這裡的意思是,讓lighttpd能接受的檔案變大。 再來就是告知lighttpd在有檔案進來時,要存在哪裡。

加了這一段後,再大的檔案都丟的進來,當然啦,不能大過你自已設的 max-request-size

這個問題我是靠"lighttpd upload limitation" 來找到答案的!

2. 在我們這裡遇到一個非常奇妙的事,就是只要用IE來access 板子上的htm檔,他就會被cache住,而且都不會去reload。使得我們有很多很奇怪的issue發生;像是: reset to default。因為檔案被cache住,所以就算底層的data已經被改成default, 但你從網頁看,所有欄位資料還是原本的,造成reset to default FAIL!

後來,發現,從lighttpd出去的封包裡,server-header裡,並沒有"cache-control=no-cache";於是,我抱著試驗的心態,把以下的 mod_setenv和一些configure加上去

server.modules 裡,要加 "mod_setenv", 然後還要加上這些configure

$HTTP["url"] =~ "^/(.*)" {
setenv.add-response-header = ( "Cache-Control" => "no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=-1" )
}

我稱之他為 "lighttpd cache-control" !

沒有留言: