我可以阻止Passenger Standalone / nginx删除双斜杠吗?

时间:2011-02-27 10:21:54

标签: ruby sinatra passenger

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

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

显然nginx只会将连续斜线减少到一个。当我致电/url/http://example.com时,它会返回:URL: http:/example.com。当我在没有乘客的情况下运行它时,它运行得很好。

2 个答案:

答案 0 :(得分:1)

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

根据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'进行编码,而不是尝试将其作为路径的一部分传递。

答案 1 :(得分:0)

Passenger Standalone的Nginx预配置,显然不是为了定制。所以我要么为这个应用程序设置一个单独的Nginx和merge_slashes off,要么找到另一个解决方案。我将以此为契机Thin。 :)