【问题标题】:Is this a Sinatra config issue, or an Apache config issue?这是 Sinatra 配置问题,还是 Apache 配置问题?
【发布时间】:2010-12-14 14:31:26
【问题描述】:

我还没有确定这是 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>

用 sinatra 解决 GET 问题,例如

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

【问题讨论】:

    标签: ruby apache sinatra


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 2021-02-07
      • 2016-09-17
      • 2010-11-13
      • 2011-10-02
      • 2015-06-27
      相关资源
      最近更新 更多