是否可以使用应用程序网关重写规则重定向到外部网站?

Is it possible to use Application Gateway rewrites rules to redirect to external website?

我的任务是使用应用程序网关重写规则来捕获对 (*).mycompany1.com 的任何请求并将其重定向到 (*).mycompany2.com。 我创建了重写集,它具有匹配请求 header Host(.*)mycompany1.com 的单一条件和响应 Location header 的单一操作要设置为 {http_req_Host_1}mycompany2.com 我的期望是,一旦收到请求,就会生成上面提到的 Location header 响应 HTTP 302。它不起作用,而是向后端发出请求并且 Location header 刚刚添加到响应中。如何强制将规则重写为 return HTTP 302?

• 我建议您了解在应用程序网关中修改重定向 URL 的过程,因为您的要求是在请求进来。这可以看作是需要 修改重定向 URL,这有时会出现在配置的上下文中,应用程序网关被配置为覆盖后端的主机名 .在这种情况下,后端看到的主机名与浏览器看到的主机名不同。在这种情况下,重定向不会使用正确的主机名。不推荐此配置.

此外,当应用服务收到重定向请求并进行响应时,它会在其响应的 header 位置使用与收到的请求中相同的主机名来自应用程序网关。因此, 客户端将直接向托管的后端网站发出请求,而不是通过应用程序网关,因此在您的情况下,刚刚添加了“位置”header回复.

• 由于您需要带有上述“位置”header 的 HTTP 302 响应,因此您必须将位置 header 中的主机名设置为应用程序网关的域姓名。为此,您必须 创建一个重写规则,该规则的条件是评估响应中的位置 header 是否包含应用程序网关的 URL。例如,在其中输入模式 '(https?)://.azurewebsites.net(.)$.' 和 创建一个操作来重写位置header,以便它具有应用程序网关的主机名。通过输入“{http_resp_Location_1}://contoso.com{http_resp_Location_2}”作为 header 值来执行此操作。或者,您也可以 使用服务器变量 host 来设置主机名以匹配原始请求 。请查看下面的屏幕截图以获取更多信息:-

请在下面找到文档 link 以获取更多信息:-

https://docs.microsoft.com/en-us/azure/application-gateway/rewrite-http-headers-url#modify-a-redirection-url