如何解决NGINX |在重定向中设置与 HOST 标头不同的主机
我的网站使用 NGINX,域名为 www.example.com
。我想更改我的配置以支持新域 blue.example.com
和 green.example.com
以支持蓝/绿部署。由于所有规则都相同,我想从同一个服务器块中为所有规则提供服务。
现有服务器块:
server {
listen 80;
server_name www.example.com;
location / {
rewrite / /homePage.html redirect;
}
.... Other location blocks....
}
我更改了我的服务器配置如下:
server {
listen 80;
server_name *.example.com;
location / {
rewrite / /homePage.html redirect;
}
.... Other location blocks....
}
问题: NGINX 0.9.x 版本会自动将当前主机名作为任何已发布的相关重定向的前缀。从 NGINX 为 blue.example.com
发出的任何相对重定向都将自身用作发出的重定向中的主机。我的要求是仅将其重定向到 www.example.com
。
例如:根据上面的配置,http://blue.example.com/
重定向到http://blue.example.com/homePage.html
。我希望它重定向到 http://www.example.com/homePage.html
。
我不想将 rewrite 语句中的替换字符串更改为具有预定义的域名,因为配置了太多重定向,并且为预定义的主机添加前缀将是一个很大的变化。
我也在使用 LUA-NGINX-MODULE 并尝试了以下内容:
- 使用 set 指令重置主机头:这给了我一个无法更改主机头值的错误
- 尝试检查 header_filter_by_lua 指令中的 Location 标头值,但此时主机未以 NGINX 为前缀。我假设这是稍后完成的。在此指令中,位置标头值仍然是:
/homePage.html
。
请为此提出一个解决方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。