【问题标题】: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。 :)