2010-12-14 11 views
2

これはApacheの問題かSinatraの問題かどうかは、基本的に単一のサーバー上で実行される小さなアプリケーションが多数あり、組み込みのwebrickインスタンスだけで展開し、Apacheを使用して、それらの要求をサブドメイン別に適切なポートにルーティングします。私はGitパーシスタンスレイヤーを持つsinatraアプリであるgollumを使用していますが、(アクションの編集後に)リダイレクトすると予期しないアプリケーションのルーティングが発生しています。私は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 

例えば、GETをためシナトラ罰金を解決しますが、シナトラに

# 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には奇妙なエントリがあります。