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