ウェブサイトを提供するために、EC2 インスタンスに Apache をインストールしました。ウェブサイトのドメインは GoDaddy から購入しました。
AWS ホストの EC2 インスタンスで Web サイトを提供するために、GoDaddy から購入したドメイン用に Route53 にホストゾーンを作成しました。
GoDaddy DNS パネルで Route53 にホストゾーンを作成した後に取得したネームサーバーを更新しました。
このネームサーバーの更新後、Web サイトを提供するために作成された EC2 インスタンスのパブリック IP を指す A レコードを Route53 のホストゾーンに作成しました。
しかし、それでも、ドメイン経由で Apache を使用して EC2 インスタンスで提供される Web サイトにアクセスすることはできません。
月曜日(2024 年 2 月 26 日)に GoDaddy パネルでネームサーバーを更新しましたが、更新からほぼ 2 日が経過しましたが、Web サイトはまだ意図したドメインで提供されていません。
以下は私の Apache 設定ファイルです:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
ServerName test.instabook.app
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
RewriteEngine on
RewriteCond %{SERVER_NAME} =test.instabook.app
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
必要なタスクをすべて実行しているにもかかわらず、Web サイトが提供されない理由がわかりません。
答え1
Apache 設定は HTTP (80) のみに設定されており、ブラウザは HTTPS (443) 経由で接続しようとしています。
最善の解決策は、SSL 証明書を購入してサーバーにインストールすることです。自己署名 SSL 証明書を使用してテストできます。
DNS伝播の確認DNSチェッカーDNS が適切に伝播され、すべてのノードが宛先アドレスを指していることを示しています。
3.110.225.226
さらに、次の Curl コマンドを実行してサイトをテストしたところ、基本的な HTTP 経由でクリーンな応答ヘッダーがすぐに返されました。
curl -ILk http://test.instabook.app
その結果は次のようになります:
HTTP/1.1 200 OK
Date: Thu, 29 Feb 2024 04:14:16 GMT
Server: Apache/2.4.52 (Ubuntu)
Last-Modified: Wed, 28 Feb 2024 11:33:38 GMT
ETag: "1268-6126f83916814"
Accept-Ranges: bytes
Content-Length: 4712
Vary: Accept-Encoding
Content-Type: text/html
しかし、いつもHTTPS を使用するとタイムアウトまでハングします:
curl -ILk https://test.instabook.app
しばらくハングしてから戻ります:
curl: (28) Failed to connect to test.instabook.app port 443: Operation timed out
問題は、サーバーを(現在)プレーン HTTP でのみ実行しているときに、ブラウザが HTTPS を強制しようとしている可能性が最も高いです。
最善の解決策は、SSL 証明書を購入してサーバーにインストールすることです。自己署名 SSL 証明書を使用して Apache セットアップをテストできますが、サイト用の実際の証明書を取得してください。