我的网络服务需要几个过滤参数,例如:
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帮助我。提前谢谢。
答案 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_INFO
和REQUEST_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;