【发布时间】:2018-07-07 17:19:51
【问题描述】:
我试图弄清楚为什么我的 ELB 目标组没有通过运行状况检查并引发 403(禁止)错误。详情如下:
- AWS Windows 10 服务器
- 适用于 Apache、PHP 和 MySQL 的 WampServer3
- 应用弹性负载均衡器
我有这样的 ALB 目标组健康检查设置
- 协议:HTTP
- 路径:/folder1/folder2/public/index.php
- 端口:交通端口
- 默认阈值和超时时间
在我的安全组中,我为入站流量打开了端口 80、443 和 22。
因为它抛出 403(禁止)错误,我必须假设健康检查“路径”设置不正确。
我正在使用 wamp,所以我的默认路径是 c:/wamp64/www 所以我很自然地首先将路径设置为指向我网站的主页(我可以从网络正常),但健康检查仍然失败并显示 403 错误。
我什至尝试输入一个不存在的路径以查看它是否会引发不同的错误,但它只是在将鼠标悬停在不健康标签旁边的“i”上时显示 403,所以我什至不确定健康检查正在更新。
编辑
好的,通过下面给出的资源,我已经成功拉取了cURL中的“PrivateIP/index.php”页面。
我已将我的目标组健康检查路径更改为“/index.php”,但它仍然抛出 403 错误。
我什至可以从 PrivateIP 公开访问我网站的主页,这似乎不安全,但让我想知道为什么它仍然失败。下面是我在 httpd-vhosts.conf 文件中允许这样做的设置。
<VirtualHost *:80>
ServerName website.com
ServerAlias xx.xx.xxx.xxx
DocumentRoot c:/wamp64/www/x/x/public/
<Directory "c:/wamp64/www/x/x/public/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
服务器别名是我的实例上弹性 IP 设置的私有 IP。
如果有人知道下一步要检查什么,请告诉我。
【问题讨论】:
-
使用 curl 并通过实例中的实例 IP 测试站点。如果实例 IP 为 10.0.0.50,则运行 curl 10.0.0.50/folder1/folder2/public/index.php。这就是 ELB 所要求的。检查您的设置并确保可以如上所述引用该站点。如果你没有 curl,你可以使用本地浏览器。
-
为了简单起见,使用 /healthcheck.php 作为健康检查目标。确保按上述方式工作。
-
ELB健康检查不使用域名它使用实例私有IP。您的服务器未正确配置为通过其 IP 提供页面。检查 apache 服务器配置。
-
@Matthew 您在配置健康检查时是否尝试过指定端口而不是流量端口?您还尝试过检查您的 apache 日志以查看 ELB 在进行健康检查时尝试访问的内容吗?日志会将您指向健康检查尝试访问的确切位置,然后您可能需要根据需要修改一些权限。
标签: amazon-web-services amazon-ec2 amazon-elb