首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx proxy_redirect不响应重写位置标头。

nginx proxy_redirect不响应重写位置标头。
EN

Stack Overflow用户
提问于 2021-12-09 07:12:07
回答 1查看 1.5K关注 0票数 1

我有个简单的问题

  • 使用nginx为6个上游服务器安装负载均衡器

我做过这件事

上游hisservers服务器{ ip_hash; 服务器A; 服务器B; 服务器C; 服务器D; 服务器E; 服务器F;} 服务器{ 听80; server_name test.server; 地点/{ proxy_set_header X转发-主机$host:$server_port; proxy_set_header X转发-服务器$host; proxy_set_header X-转发-为$proxy_add_x_forwarded_for; proxy_pass http://hisservers; }}

但问题是..。以上解决方案不重写reponse中的位置标头。所以我总是会重定向到这6个上游的任何一个

然后我做了这个

proxy_redirect http://hisservers /;

但它还是不起作用,我终于做到了

proxy_redirect http://A/ /; proxy_redirect http://B/ /; proxy_redirect http://C/ /; proxy_redirect http://D/ /; proxy_redirect http://E/ /; proxy_redirect http://F/ /;

而且很管用..。

我认为,默认情况下,nginx将匹配上游流,并重新编写位置标头。

任何关于这个的建议..。

我觉得我的解决办法很麻烦

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-09 09:02:10

每个服务器在其位置响应头中返回不同的主机名,因此您的proxy_redirect语句必须匹配这些主机名。

您可以使用单独的proxy_redirect语句匹配每个主机名,正如您在问题末尾演示的那样。

或者,proxy_redirect允许您使用正则表达式。详情请参见本文件

例如:

代码语言:javascript
复制
proxy_redirect ~*http://[^/]+(/.*)$ $1;

上述发言应取代你问题末尾的六项声明。[^/]+表达式与任何主机名匹配,(/.*)$表达式捕获替换中使用的URI。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70285943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档