【发布时间】:2016-11-21 07:32:49
【问题描述】:
我在生产环境中使用 Nginx,我们在 uri 中有一些带有双斜杠的 url,如下所示:
http://foo.com//bar/foo
我想重写或重定向到:
http://foo.com/bar/foo
选项“merge_slashes”已经启用,我试过这个:
merge_slashes off;
rewrite (.*)//+(.*) $1/$2 permanent;
但不起作用,你知道吗?
谢谢
编辑:
所以,如果斜杠在第一个 "/" 之后,则重写工作,即:
http://pippo.it/foo//bar
但如果双斜杠在域后不起作用,即:
http://pippo.it//foo/bar
我尝试转储变量 $request_uri,结果如下:
url: http://pippo.it//foo/bar
expect: $request_uri -> //foo/bar
result: $request_uri -> /foo/bar
url: http://pippo.it///foo/bar
expect: $request_uri -> ///foo/bar
result: $request_uri -> //foo/bar
可能是一个错误?
编辑 2:
我发现了错误,问题是 elb (aws),如果我直接调用 ec2 实例(安装了 nginx)我可以看到前 2 个斜杠,但如果我调用 elb,负载均衡器删除第一个斜线,我在支持中心开了一个案例。
编辑 3:
发现问题:如果你用HTTP监听器设置elb,我不知道为什么但请求没有全斜线,如果你在TCP模式下设置监听器,请求工作正常。
谢谢
【问题讨论】:
-
你改的是elb协议还是实例协议?
标签: linux ubuntu amazon-web-services nginx url-rewriting