AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1163371
Accepted
JohnLBevan
JohnLBevan
Asked: 2024-08-02 00:32:34 +0800 CST2024-08-02 00:32:34 +0800 CST 2024-08-02 00:32:34 +0800 CST

Azure 应用程序网关:后端运行状况返回 HTTP 463,用户获得 301 循环

  • 772

我有一个应用程序网关,我的后端设置配置了健康探测,允许状态 200-499 为健康(我之所以包含4xx系列代码,是因为某些解决方案的站点根目录返回 404,而其他路径下有内容,而某些站点会自动为未经授权的用户返回 403 / 我不希望这些影响后端健康状态 / 我希望我的解决方案尽可能通用,这样我就可以重复使用一系列站点上的相同设置,以尽量减少新站点加入时的工作量)。

但是,我的后端健康状况显示我的一个站点正在返回HTTP 463状态代码(因此后端仍然健康,但此响应是意外的)。此外,如果我导航到与此后端关联的侦听器的 URI,我会陷入 301 重定向到/来自同一站点。我确实配置了重定向:

  • 对于未经身份验证的用户,后端会从 重定向/到/login.aspx。这使用相对路径,因此不受 AppGW 的主机名或前端与后端协议的影响。
  • AppGW 有 HTTP 和 HTTPS 监听器,HTTP 规则重定向到 HTTPS 监听器,而 HTTPS 规则与后端相关联。

然而,即使我删除这些功能,仍然会得到相同的行为。

同一 AppGW 上的其他站点以相同的方式设置,但没有这个问题。

我有一个用于测试重定向的 PowerShell 脚本:Get-HttpUrlRedirects。如果我们假设配置为example.com,则运行的预期输出Get-HttpUrlRedirects -Url 'http://example.com' -Verbose将是:

VERBOSE: Redirecting to [https://example.com/]
VERBOSE: Redirecting to [https://example.com/login.aspx]
Url                                             StatusCode
---                                             ----------
http://example.com/                                    301
https://example.com/                                   302
https://example/login.aspx                             200

而实际输出是:


VERBOSE: Redirecting to [https://example.com/]
VERBOSE: Redirecting to [https://example.com/]
VERBOSE: Redirecting to [https://example.com/]
VERBOSE: Redirecting to [https://example.com/]
Url                                             StatusCode
---                                             ----------
http://example.com/                                    301
https://example.com/                                   301
VERBOSE: Redirecting to [https://example.com/]
https://example.com/                                   301
VERBOSE: Redirecting to [https://example.com/]
https://example.com/                                   301
VERBOSE: Redirecting to [https://example.com/]

# etc - I hit ctrl + C to terminate when I see this loop occurring
azure
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    JohnLBevan
    2024-08-02T00:43:43+08:002024-08-02T00:43:43+08:00

    这里的问题是我们的防火墙阻止了 AppGW 和相关后端之间的流量。添加允许规则解决了这个问题。

    细节

    我们的应用程序网关设置在子网上,该子网具有关联的路由表,例如0.0.0.0/0指向next hop: internet,而各个私有 IP 范围(例如172.16.0.0/12)的下一跳类型为virtual appliance,目标为我们的防火墙的内部 IP。即,这可确保到达 AppGW 的公共 IP 的流量具有从同一公共 IP 返回的响应(而不是通过 FW 的公共 IP 发出的响应),但所有内部流量在到达后端服务器之前都会通过我们的防火墙。

    防火墙有一条规则,限制从我们的 AppGW 的 CIDR 到后端的 VNet 的 CIDR 的访问(或者更确切地说,它没有允许这样做的规则;并且默认拒绝)。

    如果问题出在防火墙日志上,则什么都没出现(例如,以下 Kusto 仅返回了正常运行的后端,而没有显示Action=Deny故障后端AZFWNetworkLog | where ipv4_is_in_range(SourceIp, '172.12.0.0/28') /* CIDR for our AppGW Subnet */ and DestinationPort == 80 | distinct DestinationIp:),因此看起来好像流量没有到达防火墙,因为它没有被记录下来。由于 HTTP 代码463和301被返回,这意味着有东西在响应,而不是有东西被阻止(如果我们看到,我们可能会预料到503);因此花了一段时间才发现,因为证据似乎指向了 FW 之外的地方。

    • 0

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve