【发布时间】:2020-02-11 15:20:22
【问题描述】:
在 Azure 应用程序网关(标准层)中,我有几个多站点侦听器:
listener-one-http(80 个主机名为 www.staging.example.com) 基本规则将流量发送到以下监听器:
listener-two-https(443 主机名为 www.staging.example.com ) 如果路径包含“mystore”,则此基于路径的规则会将流量发送到 VM-01 或 VM-02。在这两个虚拟机上为不同的站点配置了 Apache。
基于路径的规则是:
Name: www.staging.example.com-https-rule
Listener: listener-two-https
Backend pool: VM-01-Pool
Default HTTP settings: HTTPS-Backend
Name, Paths, Backend pool, HTTP setting
store, /mystore/*, VM-02-Pool, HTTPS-Backend
all, /*, VM-01-Pool, HTTPS-Backend
正在强制执行基本规则(http 到 https),但基于路径的规则集似乎被忽略了。在我的浏览器中,我输入http://www.staging.example.com,这导致https://www.staging.example.com(好)但随后我收到以下消息(坏):
You don't have permission to access / on this server.
有没有办法在不检查虚拟机的情况下跟踪应用程序网关和 Apache 之间发生的事情?
【问题讨论】:
-
看起来规则是正确的,但由于实例不健康,流量没有发送到后端池,可在 Azure 中的应用程序网关 > 后端运行状况下找到。错误是“无法连接到服务器。检查是否有任何 NSG/UDR/防火墙阻止访问服务器。检查应用程序是否在正确的端口上运行。”如何将其更改为在 Azure 中探测端口 80 而不是 443?
-
您是否正在尝试端到端 SSL?您的 HTTP 设置配置是什么?您现在使用默认探针配置吗?如果后端不是众所周知的 CA,您可以尝试在需要添加可信根证书的地方创建自定义探测。
-
是的,SSL 终止按预期工作,但由于运行状况检查失败,流量未发送到后端虚拟机。 “后端运行状况”下的“端口(HTTP 设置)”在哪里定义?
-
探针与 HTTP 设置相关联。
-
我想我解决了这个问题。应用程序网关中的一条规则似乎覆盖了我添加的侦听器/规则。该网关或应用程序网关都没有传播更改。我决定通过删除侦听器/规则来测试这一点,但即使没有路由,流量仍然最终在 VM 上。我在存储中应用网关的访问日志中验证了这一点。
标签: azure http-redirect azure-application-gateway