当前位置: 首页 > 知识库问答 >
问题:

Nginxproxy_redirect不重写位置标头作为响应

堵恺
2023-03-14

我有一个简单的问题

  • 使用nginx为6台上游服务器设置负载平衡器

我已经这样做了

上游服务器{
ip_哈希;
服务器A;
服务器B;
服务器C;
服务器D;
服务器E;
服务器F;}

服务器{
监听80;
server_nametest.server;
位置/{
proxy_set_headerX-Forwarded-Host$host:$server_port;
proxy_set_headerX-Forwarded-Server$host;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_pass超文本传输协议://他的服务器;
}}

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

然后我做了这个

proxy_redirect超文本传输协议://hisserver/;

但还是不行我终于做到了

代理重定向http://A/ /;
代理_重定向http://B//
代理_重定向http://C/ /;
代理_重定向http://D/ /;
代理_重定向http://E/ /;
代理_重定向http://F/ /;

而且很有效。。

我认为nginx默认情况下会匹配上游并重写位置头。。

有什么建议吗。。

我认为我的解决方案相当老套

共有1个答案

蔡楚
2023-03-14

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

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

或者,proxy_redirect允许您使用正则表达式。有关详细信息,请参阅本文档。

例如:

proxy_redirect ~*http://[^/]+(/.*)$ $1;

以上陈述应取代问题末尾的六个陈述。[^/]表达式匹配任何主机名,(/.*)$表达式捕获要在替换中使用的URI。

 类似资料:
  • 问题内容: 不知道为什么这不起作用。这是代码: 而不是重定向页面,此输出到网页。它跳过了重定向。为什么?我怎样才能解决这个问题?page1.php是一个实际页面,与当前页面位于同一文件夹中。上面的代码是php文件的第一行。没什么 没有。甚至没有空格。 问题答案: Pekka在评论中回答了我的问题。他没有发布答案,所以我现在是。标头重定向后使用此方法。由于某种原因,页眉的其余代码在header()方

  • 问题内容: 这是我的档案。我想使其重定向,但是什么也没有发生。为了查看发生了什么,我在标题部分之前添加了回显。 它既不会引发错误,也不会重定向到index.php。怎么了?我已打开/关闭输出缓冲,但是没有任何东西可以使其重定向。我能做什么? 谢谢 问题答案: 我提醒自己,我已经在实际的测试环境中安装了xDebug,在对其进行了搜索之后,我发现了以下站点:http ://bugs.xdebug.or

  • 问题内容: 我使用的是node-http-proxy,想要监视特定的响应标头,并在必要时重写它。这里有人建议这样做吗? 我的代理服务器位于几个不同的节点服务器以及一个Java WebApp的前面。Java应用程序正在设置Cookie,但是该Cookie的路径相对于Web应用程序的上下文。我需要cookie是安全的,并且有一个无需修改Java应用程序即可到达root的路径。 换句话说,将返回以下标头

  • 问题内容: 有人可以建议我在这里做错什么吗? 我正在尝试使用Java获取特定URL的标头位置,这是我的代码: 这很奇怪,因为我确定我要确保返回的URL标头是URL,并且使用诸如getContentType()或getContentLength()之类的方法可以完美地工作 问题答案: 可能标头作为重定向响应的一部分返回。如果是这样,则通过向指向的资源发出第二个请求来自动处理重定向,因此您需要禁用它:

  • 问题内容: 我有此代码,为什么我的标题位置不起作用?它是一种在我的控制面板中更新,编辑和删除某些页面的形式…并且我在form.php的同一文件夹中有一个index.php文件…任何帮助吗?()我试图将标题放在编辑和删除…并且仍然转到表单页面而不是索引… 解决: 使用@ Mihai Iorga代码,我添加了ob_start(); 问题答案: 那是因为您有一个输出: 导致空白行输出。 在发送任何实际输

  • 我正在尝试使用角和Spring启动编写登录页面,但我无法阅读角的帖子响应。 表单登录 ts组件 服务身份验证 问题是:我怎样才能得到回复后的标题……我想得到授权