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