Apache と Route 53 を使用して自分のドメインでホストされている Web サイトにアクセスできないのはなぜでしょうか?

Apache と Route 53 を使用して自分のドメインでホストされている Web サイトにアクセスできないのはなぜでしょうか?

ウェブサイトを提供するために、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 セットアップをテストできますが、サイト用の実際の証明書を取得してください。

関連情報