如何在 nginx 中配置重定向以相对重定向到特定路径来响应某个 url?
The Nginx 文档 https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#rewrite-missing-http表明这是 nginx 的默认模式,但实际上,如果重定向到的位置以 / 开头,则 nginx 会在位置字段中使用绝对 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,例如在开发中或通过 ssl 终止负载均衡器明确表示,并且宁愿通过减轻 nginx 需要理解该上下文的方式来使事情变得简单。
仅供参考,这些示例是使用curl 对 nginx 版本 1.4.6 和 1.9.6 进行测试的,例如:
curl --head http://127.0.0.1/b
有一个 nginx 指令absolute_redirect http://nginx.org/en/docs/http/ngx_http_core_module.html#absolute_redirect可从 nginx 版本获取1.11.8,默认情况下启用。如果disabled,nginx 发出的重定向将是相对的。这个问题有点老了,但也许对所有从谷歌上找到它的人都有用。
absolute_redirect off;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)