為什麼我似乎無法使用 Apache 和 Route 53 存取我的網域上託管的網站?

為什麼我似乎無法使用 Apache 和 Route 53 存取我的網域上託管的網站?

我在 EC2 執行個體上安裝了 Apache 來為我的網站提供服務。我從 GoDaddy 購買了該網站的網域。

為了在 AWS 託管的 EC2 執行個體上提供網站服務,我在 Route53 中為從 GoDaddy 購買的網域建立了一個託管區域。

我更新了在 GoDaddy DNS 面板中的 Route53 中建立託管區域後獲得的網域伺服器。

名稱伺服器更新後,我在 Route53 的託管區域中建立了一條 A 記錄,指向為服務我的網站而建立的 EC2 執行個體的公共 IP。

但是,我仍然無法透過網域使用 Apache 存取 EC2 執行個體上提供的網站。

在此輸入影像描述

我於週一(2024 年 2 月 26 日)更新了 GoDaddy 面板中的網域伺服器,自更新以來已經過去了近 2 天,但該網站仍然沒有在目標網域上提供服務。

這是我的 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

我無法理解為什麼儘管執行了所有需要的任務,但網站仍然沒有得到服務。

答案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 設定;但請為您的網站取得真實的證書。

相關內容