这是Sinatra配置问题,还是Apache配置问题?

时间:2010-12-14 14:31:26

标签: ruby apache sinatra

我还没有确定这是Apache问题还是Sinatra问题,基本上,我们在一台服务器上运行了一堆小应用程序,我们只使用内置的webrick实例部署它们并使用apache重新启动 - 通过子域将这些请求路由到正确的端口。我正在使用gollum这是一个带有git持久层的sinatra应用程序,但是当它重定向时(编辑操作之后)我得到了一个意外的应用程序路由。我不确定是否可以通过将启动选项传递给Sinatra来解决此问题,或者通过在应用程序的虚拟主机声明中配置重写规则来解决此问题。请在您的答案中包括您认为最佳的选项以及如何完成该选项的示例。 谢谢,

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

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

解决了对于GET来说很好的sinatra,例如

wiki.domain.com/Home

但在sinatra重定向上失败

# expected
wiki.domain.com/Home

# actual
wiki.domain.com:3006/Home

这是Sinatra行动(来源: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

1 个答案:

答案 0 :(得分:0)

这是一个很长的镜头,但是ProxyPass指令中的URL可能需要尾随/?这就是文档中的内容,我在error.log中找到了一些没有它们的奇怪条目。