2010-12-14 60 views
2

我還沒有確定這是Apache問題還是Sinatra問題,基本上,我們有一堆運行在單個服務器上的小應用程序,我們只使用內置的webrick實例部署它們,並使用apache重新部署它們,通過子域將這些請求路由到正確的端口。我正在使用gollum,它是一個帶有git持久層的sinatra應用程序,但是當它重定向時(編輯操作之後),我得到了意外的應用程序路由。我不確定我是否可以通過向Sinatra傳遞啓動選項來解決此問題,或者通過在應用程序的虛擬主機聲明中配置重寫規則來解決此問題。請在你的回答中包括你認爲最好的選項,以及它如何實現的例子。 謝謝,這是Sinatra配置問題還是Apache配置問題?

# apache virtualhost declaration 
<VirtualHost *:80> 
    ServerName wiki.domain.com 
    DocumentRoot "/var/www/html" 

    ProxyPass/http://localhost:3006 
    ProxyPassReverse/http://localhost:3006 
</VirtualHost> 

解決了西納特拉罰款入眼,如

wiki.domain.com/Home 

,但未能對辛納屈重定向

# expected 
wiki.domain.com/Home 

# actual 
wiki.domain.com:3006/Home 

這裏是屈的動作(來源:https://github.com/github/gollum/blob/master/lib/gollum/frontend/app.rb

post '/edit/*' do 
    name = params[:splat].first 
    wiki = Gollum::Wiki.new(settings.gollum_path) 
    page = wiki.page(name) 
    format = params[:format].intern 
    name = params[:rename] if params[:rename] 

    wiki.update_page(page, name, format, params[:content], commit_message) 

    redirect "/#{CGI.escape(Gollum::Page.cname(name))}" 
end 

回答

0

這是一個長鏡頭,但也許ProxyPass指令中的URL需要有尾隨/?這就是它在文檔中的情況,並且在沒有它們的情況下我在error.log中得到了一些奇怪的條目。