【问题标题】:Ho do I prevent Passenger Standalone/nginx from removing double slashes?如何防止Passenger Standalone/nginx删除双斜杠?
【发布时间】:2011-05-26 06:40:21
【问题描述】:

我正在尝试使用Passenger Standalone 运行Sinatra 应用程序。该应用程序在 URL 中获取一个 URL,如下所示:

get "/url/*" do |url|
  "URL: #{url}"
end

显然 nginx 将连续的斜杠减少到只有一个。当我调用/url/http://example.com 时,它会返回:URL: http:/example.com。当我在没有Passenger的情况下运行它时,它运行良好。

【问题讨论】:

  • 没有。看我的回答。

标签: ruby sinatra passenger


【解决方案1】:

使用/url/http://example.com 与正确 URL 的规则相冲突:

根据RFC 1738,3.3。 HTTP:

Within the <path> and <searchpart> components, "/", ";", "?" are
reserved.  The "/" character may be used within HTTP to designate a
hierarchical structure.

我会对“http://example.com”进行编码,而不是尝试将其作为路径的一部分传递。

【讨论】:

    【解决方案2】:

    Passenger Standalone 的 Nginx 是预配置的,显然不是为了定制。因此,我要么必须为此应用程序使用merge_slashes off 设置单独的 Nginx,要么找到其他解决方案。我会以此为契机尝试Thin。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 2018-12-10
      • 1970-01-01
      • 2012-09-06
      相关资源
      最近更新 更多