У меня есть сервер ubuntu, на котором запущен apache на localhost / port 80. Это домен sub.domain.com
Если я сделаю запрос на завиток http: // localhost на этом компьютере немедленно появится ошибка «Не удалось подключиться к хосту».
Если я сделаю запрос curl к sub.domain.com на этом компьютере, он будет находиться там в бесконечном цикле, пока не истечет время ожидания через несколько минут.
Если я открываю sub.domain.com в своем веб-браузере на другом компьютере, отображается моя html-страница.
Если я сделаю запрос curl на sub.domain.com с другой машины, он подключится.
В чем дело?
Вероятно, вам нужно указать заголовки хоста с помощью curl, иначе Apache не знает, какую страницу отображать - в зависимости от того, как вы настроили, localhost, вероятно, покажет страницу apache по умолчанию, в то время как ваш виртуальный хост (sub.domain.com) будет покажите страницу, которую вы ожидаете.
Попробуйте использовать:
curl -H "Host:sub.domain.com" 127.0.0.1
Ваш комментарий: «он прослушивает 192.168.2.1, а затем общедоступный IP. Устройство обратной петли - 127.0.0.1». Итак, Apache не слушаете 127.0.0.1? Если это так, то это ваша проблема. Настройте Apache для прослушивания всех интерфейсов или, по крайней мере, добавьте интерфейс обратной связи к тому, что прослушивает Apache.
Следующая проблема: «Если я сделаю запрос curl к sub.domain.com на этой машине, он будет оставаться там в бесконечном цикле, пока не истечет время ожидания через несколько минут». Что ты получишь, когда ты ping sub.domain.com
? Эта проблема выглядит как проблема разрешения имен на этом компьютере, поскольку вы можете успешно подключиться с другого компьютера.
Делать ping sub.domain.com
с другой машины и записать IP-адрес в ответах (xxx.yyy.zzz.www). Затем с машины apache используйте:
curl -H "Host:sub.domain.com" xxx.yyy.zzz.www