如何在nginx中配置重定向以响应特定路径的相对重定向?
nginx文档建议这是nginx的默认模式,但实际上,如果被重定向的位置以/开头,nginx会在Location字段中使用绝对URL进行响应。
对于包含位置信息的本地服务器配置:
location = /a {
return 301 some/path;
}
location = /b {
return 301 /qwerty;
}
对于请求 /a,响应的位置是:
Location: some/path
而对于 /b 来说,它是:
Location: http://127.0.0.1/qwerty
然而,我们希望/b做出回应:
Location: /qwerty
我们希望使用相对重定向的原因是,我们想从不同的域和代理访问nginx,例如在dev中以明文形式或通过ssl终止负载均衡器,在这种情况下,我们更愿意简化事情,使nginx无需理解上下文。
请注意,这些示例已针对nginx版本1.4.6和1.9.6进行了测试,使用curl进行了测试,例如:
curl --head http://127.0.0.1/b