2011-04-11 42 views
2

我剛剛發現this question在serverfault詳細如何創建一個自定義目錄列表處理程序爲nginx與PHP腳本。我想用一個ruby腳本來做同樣的事情。自定義目錄列表處理程序在紅寶石nginx

location /test/ { 
    error_page 404 = /webdir/handler.php; 
    return 404; 
} 

我的問題是,我會簡單地做同樣的事情,但引用handler.rb而不是handler.php,我的意思是,將Nginx的自動知道評估Ruby腳本的輸出到用戶的瀏覽器嗎?所以我只是簡單地創建一個腳本來完成一些puts的調用,或者這樣做的首選方式是什麼?我對機架或sinatra瞭解不多,但是這種情況哪一個會派上用場?我確實安裝了乘客。

我很可能想在這包括CSS來使列表看起來不錯,我可能會更喜歡在haml或erb中創建結構。我不介意結構模板和css是否需要內聯在同一個handler.rb中,但是如果可以將它分隔成很漂亮的文件。

最後,我想這適用於mysite.com/downloads/目錄及其所有子目錄。什麼是首選location指令?我看到

location ~ /$ 

是讓所有目錄的工作,但我只希望它適用於downloads/及其所有子目錄。我認爲這將是一個簡單的正則表達式修改,但我寧願確定。

謝謝,我很感激。

回答

0

不,nginx不會自動評估Ruby腳本。最好的辦法是將處理程序設置爲某種Rack應用程序(幾乎所有Ruby Web框架或處理程序都是Rack應用程序,包括Sinatra和Rails),然後使用乘客或Ruby服務器(如獨角獸)作爲nginx代理。

鑑於您的額外要求,我會先看看Sinatra。

+0

我確實有乘客,即使那樣它也不會評估ruby腳本的權利。所以我應該看看sinatra。你會碰到任何進一步的建議嗎? – 2011-04-12 02:36:03

+0

具體來說,你會提供更多關於nginx設置的信息嗎?所以我會讓它成爲一個sinatra應用程序,然後呢?我的困惑是,我將如何設置它作爲目錄列表的處理程序,在我看來,你認爲它不會與上述內容相同。 – 2011-04-12 02:39:50

+0

一個簡單的谷歌查詢(「sinatra nginx乘客」)給了我http://blog.zerosum.org/2008/7/4/passenger-3-sinatra和其他一些資源。每隔一段時間嘗試一下DAFS。 – 2011-04-12 05:25:58