Я установил Apache на своем экземпляре EC2 для обслуживания своего веб-сайта. Я купил домен для веб-сайта у GoDaddy.
Для обслуживания веб-сайта на размещенном на AWS экземпляре EC2 я создал размещенную зону в Route53 для приобретенного у GoDaddy домена.
Я обновил серверы имен, которые получил после создания размещенной зоны в Route53 в панели DNS GoDaddy.
После этого обновления сервера имен я создал запись A в размещенной зоне Route53, указывающую на публичный IP-адрес экземпляра EC2, созданного для обслуживания моего веб-сайта.
Но я по-прежнему не могу получить доступ к своему веб-сайту, размещенному на экземпляре EC2, с использованием Apache через домен.
Я обновил серверы имен в панели GoDaddy в понедельник (26 февраля 2024 г.). С момента обновления прошло уже почти 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
Проблема, скорее всего, в том, что ваш браузер пытается принудительно включить HTTPS, когда сервер (в настоящее время) работает только на обычном HTTP.
Лучшим решением будет приобрести сертификат SSL и установить его на сервере. Вы можете протестировать настройку Apache с помощью самоподписанного сертификата SSL; но, пожалуйста, получите настоящий сертификат для своего сайта.