Вопрос или проблема
Я пытаюсь разместить URL xyz.app на Apache. Я настроил все на своем сервере, но даже не получаю ничего в access.log. На том же сервере я уже хостингую сайт .com, который работает нормально. Вот окружение, которое я использую;
ОС: Ubuntu 20.04.2 LTS
Сервер: Apache/2.4.41
Мой файл xyz.conf выглядит следующим образом;
<VirtualHost *:80>
# Директива ServerName устанавливает схему запроса, имя хоста и порт, которые
# сервер использует для своей идентификации. Это используется при создании
# URL-адресов перенаправления. В контексте виртуальных хостов директива ServerName
# указывает, какое имя хоста должно появиться в заголовке Host: запроса для
# соответствия этому виртуальному хосту. Для виртуального хоста по умолчанию (этого файла)
# это значение не является решающим, так как оно используется как вспомогательный хост.
# Однако вы должны явно установить его для любого последующего виртуального хоста.
ServerName xyz.app
<Directory "/var/www/xyzapp">
AllowOverride All
Require all granted
</Directory>
# ServerAdmin webmaster@localhost
DocumentRoot /var/www/xyzapp
# Доступные уровни логирования: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# Также можно настроить уровень логирования для отдельных
# модулей, например,
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Для большинства конфигурационных файлов из conf-available/, которые
# включаются или отключаются на глобальном уровне, возможно
# включить строку только для одного конкретного виртуального хоста. Например, следующая строка
# включает конфигурацию CGI только для этого хоста
# после того, как она была глобально отключена с помощью "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
мой вывод apachectl -S выглядит следующим образом;
Конфигурация VirtualHost:
*:80 является NameVirtualHost
сервер по умолчанию xyz.app (/etc/apache2/sites-enabled/xyz.conf:1)
порт 80 имя хоста xyz.app (/etc/apache2/sites-enabled/xyz.conf:1)
порт 80 имя хоста aaa.com (/etc/apache2/sites-enabled/aaa.conf:1)
Корень сервера: "/etc/apache2"
Основной DocumentRoot: "/var/www/html"
Основной ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: используя_по_умолчанию
Mutex proxy: используя_по_умолчанию
Mutex default: dir="/var/run/apache2/" механизм=по_умолчанию
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Пользователь: name="www-data" id=33 неиспользуемый
Группа: name="www-data" id=33 неиспользуемая
Я пробовал traceroute с других машин, и трассировка была успешной до сервера, так что моя конфигурация DNS правильная. Также я проверил напрямую, используя HTTP://IP, и это приводит меня на целевую страницу. Но мой URL xyz.app не работает. Буду признателен за любую помощь. Спасибо
После того как я потратил пару дней, я выяснил проблему. Публикую здесь, чтобы это могло помочь кому-то в будущем. Я проверил свои сетевые запросы, и они показали мне, что всякий раз, когда я пытался вызвать HTTP, меня перенаправляло на HTTPS (даже если я редактировал URL и пробовал снова). Чтобы проверить это, я наткнулся на этот пост на форуме GoDaddy с информацией:
Это связано с тем, что браузер ожидает наличия HTTPS, поскольку
они поставляются с бесплатным SSL (согласно реестру доменов).
Так что я обновил свой HTTP-хостинг до SSL-сертификата, и все работало гладко. По всей видимости, это не было проблемой конфигурации, и это имело отношение к URL и домену .app.
Ответ или решение
Проблема, с которой вы столкнулись при хостинге домена .app на Apache, связана с требованиями к безопасному соединению. Домен .app требует поддержки HTTPS, поскольку Google зарегистрировал это доменное расширение с обязательным использованием SSL-сертификатов по умолчанию. Это может объяснить, почему ваши запросы на HTTP перенаправляются на HTTPS, даже если такой редирект не был настроен на сервере.
Вот пошаговый план действий, который поможет вам правильно настроить виртуальный хост для вашего домена .app:
-
Настройка SSL-сертификата: Убедитесь, что у вас есть действующий SSL-сертификат для домена xyz.app. Вы можете получить его через Let’s Encrypt или приобрести его у другого провайдера. Процесс установки сертификата обычно включает в себя следующие этапы:
- Установите
certbot
и необходимые плагины для Apache:sudo apt update sudo apt install certbot python3-certbot-apache
- Запустите команду для автоматической настройки SSL:
sudo certbot --apache -d xyz.app
- Установите
-
Настройка виртуального хоста для HTTPS: Создайте или измените файл конфигурации виртуального хоста для вашего домена так, чтобы он поддерживал HTTPS:
Файл
/etc/apache2/sites-available/xyz.conf
должен выглядеть следующим образом:<VirtualHost *:80> ServerName xyz.app Redirect permanent / https://xyz.app/ </VirtualHost> <VirtualHost *:443> ServerName xyz.app DocumentRoot /var/www/xyzapp <Directory "/var/www/xyzapp"> AllowOverride All Require all granted </Directory> SSLEngine on SSLCertificateFile /etc/letsencrypt/live/xyz.app/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/xyz.app/privkey.pem ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
-
Активируйте модуль SSL и перезапустите Apache:
sudo a2enmod ssl sudo systemctl restart apache2
-
Проверка конфигурации: Убедитесь, что ваш сайт доступен по адресу
https://xyz.app
. Вы можете использовать инструменты, такие какcurl
для проверки подключения:curl -I https://xyz.app
-
Обновление DNS (если применимо): Если у вас есть какие-либо изменения в конфигурации DNS, убедитесь, что они обновлены и правильные.
Обратите внимание, что если вы не видите записи в access.log
или error.log
, это может также быть связано с конфигурацией вашего логирования. Убедитесь, что у вас установлены правильные права доступа к логам и что сервер действительно перезапускается после внесения изменений в конфигурацию.
Следуя этим шагам, вы должны быть в состоянии устранить проблему и успешно настроить хостинг для вашего домена .app на Apache.