nginx:如何在网址中保留双斜杠

时间:2010-12-01 02:49:40

标签: nginx

我的网络服务需要几个过滤参数,例如:

http://mydomain.com/filter1/value1/filter2/value2/filter3/value3

棘手的是有时候一些过滤变量不存在,所以这样的网址可以传递给这个服务:

http://mydomain.com/filter1//filter2//filter3/value3

现在我需要配置我的nginx(或fastcgi)来保持双斜杠。目前它正在取代单斜杠。我是nginx&的新手fastcgi配置,我不知道该怎么做。当我请求第二个网址时,我从我的php脚本中捕获了request_uri,我得到了

http://mydomain.com/filter1/filter2/filter3/value3

Plz帮助我。提前谢谢。

5 个答案:

答案 0 :(得分:20)

syntax: merge_slashes [on|off]
default: merge_slashes on
context: http, server

您必须使用:merge_slashes off;

答案 1 :(得分:5)

我有一个与nginx + passenger(对于Ruby on Rails / Rack /等)类似的问题,我确认默认情况下会折叠多个斜杠(PATH_INFOREQUEST_URI) 。

在nginx配置的merge_slashes off;上下文中添加server修复它(我现在看到多个斜杠正好)。

答案 2 :(得分:3)

另外,请确保在proxy_pass行中没有尾部斜杠!

  • proxy_pass http://localhost:3000;

  • 不良proxy_pass http://localhost:3000/;

答案 3 :(得分:0)

根据之前的答案,解决方案是在您的Nginx配置中使用merge_slashes off;。但是,如果您使用虚拟主机,则看起来您需要将其包含在第一台主机中。在v1.4.1和v1.4.6就是这种情况。

答案 4 :(得分:0)

如果此处发布的方法不起作用,请尝试

      proxy_redirect     default;
      proxy_http_version 1.1;
      proxy_set_header   Host              $host;
      proxy_set_header   X-Real-IP         $remote_addr;
      proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
      proxy_set_header   X-Forwarded-Proto $scheme;
      proxy_max_temp_file_size 0;

参考:running jenkins hehind nginx