我还没有确定这是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
答案 0 :(得分:0)
这是一个很长的镜头,但是ProxyPass指令中的URL可能需要尾随/
?这就是文档中的内容,我在error.log中找到了一些没有它们的奇怪条目。