在 AWS EC2 ELB SSL 上运行 WordPress 时出现 503 错误

Posted

技术标签:

【中文标题】在 AWS EC2 ELB SSL 上运行 WordPress 时出现 503 错误【英文标题】:503 error when running WordPress on AWS EC2 ELB SSL 【发布时间】:2017-01-04 20:09:05 【问题描述】:

我刚开始使用 AWS...

我有 1 个EC2 Instance,它正在运行 WordPress(WordPress 由来自市场的 Bitnami 图像提供支持 - https://aws.amazon.com/marketplace/pp/B007IP8BKQ)。 一切正常,我可以访问从标准 HTTP 运行的 WP 安装的前端和后端。

当我将实例连接到 ELB 并尝试通过 HTTPS 访问该站点时,问题就开始了。

我已经完成了使用 ACM 设置 SSL 证书并将证书应用到 ELB 的过程。我还在 EC2 实例的安全组上启用了 443 和 80 端口。 ELB 上的端口转发设置为 443 和 80 都转到 80,我的 WP 配置文件设置为检查 HTTP_X_FORWARDED_PROTO 标头以阻止 WP 进入无限重定向循环。

我认为这一切都很好,因为我可以通过 HTTPS 访问该站点并浏览页面。但是,当我尝试登录时,我被重定向到 HTTP 并解决此问题,我已将 WP 站点 URL 和 WP 主页 URL 设置为 HTTPS。这会导致大量 503 错误 (503 Service Unavailable: Back-end server is at capacity)。从 AWS 仪表板中,我可以看到实例运行良好。

我进行了大量研究,以确保我已正确设置所有内容(我遇到的一些线程 - Link 1 Link 2 )并且一切似乎都很好(但有些东西是错误的)。

关于如何让 ELB 工作的任何建议?

【问题讨论】:

你看到***.com/a/30702491/1428388了吗? @jbird 我有,谢谢。我已经在我的配置文件中检查标题: if( $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) $_SERVER['HTTPS'] = 'on'; 这会导致大量的 503 错误 -- 当“后端服务器已满”不一定准确描述问题。您是否检查过网络服务器日志,看看网络服务器是否真的看到了这些失败的请求,以及这些请求的结果是什么? 我是 AWS 的新手,如何访问这些,@Michael-sqlbot?我需要安装 CloudWatch 还是可以通过 ftp/ssh 访问它们? 服务器上的日志,您可以通过 ssh 连接到服务器。文件名和位置各不相同,但sudo ls -ltr /var/log 并检查最后几个条目通常是一个不错的选择。对于 ELB 经典,请参阅access log collection。日志被写入 S3,您可以在其中获取并读取它们。 【参考方案1】:

在你的 Wordpress 根目录下的 .htaccess 文件中,你是否尝试过添加

<IfModule mod_setenvif.c>
  SetEnvIf X-Forwarded-Proto "^https$" HTTPS
</IfModule>
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %HTTP:X-Forwarded-Proto ^http$
  RewriteRule .* https://%HTTP_HOST%REQUEST_URI [R=301,L]
</IfModule>

还要确保在wp_options 表中,siteurl 设置为 https://,home 设置为 https://

【讨论】:

以上是关于在 AWS EC2 ELB SSL 上运行 WordPress 时出现 503 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS EC2 和 ELB 上使用 Godaddy 注册的域实现 SSL 证书

使用AWS ELB将域名添加到ECS应用程序

使用直通 TCP SSL 获取 AWS ELB 中的客户端 IP - Apache

AWS EC2应用程序负载均衡器+双向SSL?

如何为 ELB 实例安装外部 SSL?

使用 AWS Certificate Manager (ACM) 和在 ELB 后面运行的 EC2 服务器通过 HTTPS 处理会话需要 LEMP 堆栈进行哪些更改?