当将Amazon Lightsail的WordPress转为HTTPS时,负载均衡器的健康检查失败了
在使用Amazon Lightsail构建WordPress网站后,当进行https化后,Lightsail的负载均衡器健康检查失败。因此,记录下当时的处理方法。
Lightsail / WordPress 是第一次接触。
前提条件和环境
前提条件
-
- サイト・Wordpressのhttps化が終わっている
-
- WordPressのSSL化については「Really Simple SSL」プラグインを使用
- SSHでサーバーに接続出来て、ファイルの編集が出来る
环境
-
- 環境:Amazon Lightsail
-
- インスタンス:Lightsail の WordPressインスタンスを使用(Webサーバーはapache2の模様)
-
- DNSゾーン:LightsailのDNSゾーンを使用(Route53も使用)
-
- ロードバランサー:Lightsailのロードバランサーを使用
-
- 証明書:AWS Certificate Managerで取得
- WordPressのSSL化:「Really Simple SSL」プラグインを使用
非常简单的SSL设置
以下是对原文的中文翻译:
.htaccess是未被使用的设置。
在应用该设置后,插件检测设置有时会显示“❌Really Simple SSL has received no response from the webpage.”,有时则不会显示。
当查看网站内容时,在“See our knowledge base…”中发现有描述:“如果前端页面加载正常,可能是误报”,因此可以访问网站就可以了吧…(难道行不通吗)
(数天后再查看时,这个问题已经消失了,应该是没问题了吧?也许)。
https://really-simple-ssl.com/knowledge-base/how-to-fix-no-response-from-webpage-warning/
情况
负载均衡器的健康检查失败
处理
一般趋势来说,
-
- 为了避免加载首页花费过长时间等问题,创建一个用于健康检查的空HTML页面。
-
- 在httpd-prefix.conf文件中添加配置。
-
- 重启apache2。
- 自定义Lightsail的健康检查目标。
成为。
创建一个用于健康检查的空HTML。
使用SSH连接到服务器,并使用以下命令创建一个空的HTML文件。
$ touch /opt/bitnami/apps/wordpress/htdocs/health.html
修改 httpd-prefix.conf
我在“应用程序网址移至根目录”设置和“默认”设置之间添加了以下设置。
文件位于/opt/bitnami/apps/wordpress/conf/目录下。
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteCond %{REQUEST_URI} !^/health.html
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
由于没有「RewriteCond %{REQUEST_URI} !^/health.html」时,无法解决健康检查失败的问题,所以我添加了它。
Lightsail负载均衡器在80端口(http)上进行检查,但在SSL化后重定向到443端口会失败(?)。因此,我打算在请求为health.html时,不进行https重定向。
整个团队的情况如下所示。
# App url moved to root
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
#Alias /wordpress/ "/opt/bitnami/apps/wordpress/htdocs/"
#Alias /wordpress "/opt/bitnami/apps/wordpress/htdocs"
# User Add
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteCond %{REQUEST_URI} !^/health.html
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Default
RewriteEngine On
RewriteCond "%{HTTP_HOST}" ^ec2-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})\..*\.amazonaws.com(:[0-9]*)?$
RewriteRule "^/?(.*)" "%{REQUEST_SCHEME}://%1.%2.%3.%4%5/$1" [L,R=302,NE]
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf”
重新启动Apache
$ sudo /opt/bitnami/ctlscript.sh restart apache
自定义Lighsail的健康检查目标
进入Lightsail负载均衡器的设置页面,并在自定义目标中添加“health.html”。
将其保存。
检查花了一段时间,但最终成功了。
最后
在检测插件的设置中,❌或✅出现产生了一些担忧。
几天后检查时,发现✅的稳定(?)性似乎不错,所以暂且可以接受。
我本来打算拍一张健康检查失败的图片,所以尝试将检查目标返回默认值(/),但却无法成功(最终指定了不存在的目标)。唔,我开始怀疑是否真的需要为httpd-prefix.conf中的health.html设置排除规则。
我参考了一个网站。
以下是一些连接,根据您的要求,我将提供一种可行的选项:
https://qiita.com/clown0082/items/d9ede1d775cb35aa30fa
https://qiita.com/m1ul24/items/efbf5bfc75d65cffa166
https://qiita.com/foursue/items/58e74c4a8c946dd49e12