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