Первое, что нужно знать, это то, что современные веб-браузеры могут быть не лучшим инструментом для отладки подобных проблем. Причиной их может быть даже браузер, поскольку сервер может быть настроен совершенно правильно, и проблема может быть на 100% на стороне клиента.
Содержание:
- тестирование (с
завиток
и инкогнито/анонимный браузер)
- оба теста отображают ожидаемое содержимое
завиток
делает, но в приватном окне браузера не отображается правильное содержимое
- ни один тест не отображает ожидаемое содержимое
тестирование
Попробуйте не только протестировать с полным доменным именем http://sub.example.com
но используйте более полный URL-адрес, например http://sub.example.com/some-page.html
. Когда вы знаете, что находитесь за прокси-сервером, добавление дополнительных параметров обычно обходит кэшированное содержимое, т. е. добавляет и увеличивает счетчик, такой как http://sub.example.com/some-page.html?test=3
тест из окна браузера "Приват/Инкогнито".
Это снижает вероятность неправильных выводов на основе кэшированных объектов.
test из командной строки (на тестовом сервере), например, завиток -vv http://sub.example.com/some-page.html
или использовать телнет
и эмулировать веб-запрос с помощью
телнет sub.example.com 80
ПОЛУЧИТЬ /some-page.html HTTP/1.1
Хост: sub.example.com
Что искать в завиток
вывод:
Настройки прокси, безусловно, являются признаком опасности и реальной помехой при отладке проблем с сервером. Прокси-серверы могут кэшировать (записи DNS и веб-контент), ограничивать ваш доступ и даже заменять сертификаты TLS.
завиток -vv http://sub.example.com/some-page.html
* Использует переменную окружения прокси no_proxy == 'localhost,127.0.0.1,.corp.example.net'
* Использует переменную окружения прокси-сервера http_proxy == 'http://[user]:[pass]@proxy.corp.example.net:8080/'
* Попытка 10.2.0.80:8080...
^^^ Опасность - Прокси-сервер
Протестируйте из (тестовой) системы, которая не использует прокси-сервер, если вы хотите правильно протестировать конфигурацию веб-сервера в Интернете. Обычно у меня нет тестовых систем, поддерживающих полноценный браузер, но обычно я могу управлять системой, которая запускает команды curl из командной строки.
завиток -vv http://sub.example.com/some-page.html
* О подключении() к порту 80 sub.example.com (#0)
* Попытка 192.168.2.119...
* Подключен к sub.example.com (192.168.2.119), порт 80 (#0)
^^^ ПРОВЕРЬТЕ, правильный ли это IP-адрес
вашего веб-сервера?
> ПОЛУЧИТЬ /some-page.html HTTP/1.1
> Пользовательский агент: curl/7.29.0
> Хост: sub.example.com
> Принять: */*
Там вы видите, что соединение успешно установлено с правильным IP-адресом и портом веб-сервера. > маркер предшествует заголовкам запроса, сделанным curl.
Заголовки ответов сервера отмечены значком < маркер, а затем после пустой строки сервер отправляет тело ответа:
< HTTP/1.1 302 Найдено
| ^^^ Код ответа HTTP STATUS сервера
`^^ версия протокола HTTP
< Дата: понедельник, 07 февраля 2022 г., 13:58:11 по Гринвичу
< Сервер: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
<Расположение: https://sub.example.com/some-page.html
< Длина содержимого: 216
< Тип содержимого: текст/html; кодировка = iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
...
После первого заголовка протокола HTTP/1.1
приходит Код состояния HTTP сервер генерирует. Там 2хх
ответ означает некоторую форму успеха, 3хх
ответы перенаправляют (см. здесь), 4хх
и 5хх
являются ошибки.
Из других заголовков сервер отправляет Место расположения:
в этом примере указывает цель ответа перенаправления.
оба теста отображают ожидаемое содержимое
Заключение: Веб-сервер настроен правильно, и проблема связана с браузером.
Наиболее вероятно причина: возможно, была настроена постоянная переадресация до изменения конфигурации веб-сервера и постоянные редиректы (301) кэшируются браузерами. Довольно распространены кешированные неработающие перенаправления или кешированные перенаправления на https и отсутствие сертификата и сайта https для sub.example.com
еще не настроен.
Решение 1: Очистите кэш браузера, и сайт должен загружаться должным образом.
Резолюция 2: Получите SSL-сертификат для sub.example.com и включите TLS.
Причина 2: Не совсем та же основная причина, но фактически аналогичная причина и следствие кешированного перенаправления на https, Строгая транспортная безопасность HTTP (HSTS), установленная пример.com
domain также применим ко всем (новым) поддоменам example.com. Любой достаточно современный браузер хранит и соблюдает политики HSTS и отказывается подключаться по простому http к порту 80 и молча переписывает http://sub.example.com
URL-адрес для https://sub.example.com
и попытайтесь подключиться к порту 443 с помощью TLS.
Разрешение: получите SSL-сертификат для sub.example.com и включите TLS.
Очистка кеша браузера HSTS может работать временно, но это эффективно только в том случае, если вы также удалите политику HSTS включения поддоменов из example.com, что не рекомендуется.
завиток
делает, но в приватном окне браузера не отображается правильное содержимое
Заключение: Веб-сервер настроен правильно, и проблема связана с браузером или клиентом.
Причина 1:Не совсем та же основная причина, но фактически аналогичная причина и следствие для кэшированного Строгая транспортная безопасность HTTP(HSTS) политика домен в списке предварительной загрузки HSTS.Но там, где кешированные политики HSTS не должны соблюдаться в окнах «Частное/инкогнито», всегда должен применяться список предварительной загрузки HSTS, даже в окнах частного/инкогнито.
Просмотрите эти вопросы и ответы, чтобы узнать, как определить, входит ли ваш домен или ваш TLD в список предварительной загрузки HSTS:
Список доменов верхнего уровня (TLD), для которых требуется HTTPS-подключение, например .dev.
Разрешение:получите SSL-сертификат для sub.example.com и включите TLS.
Причина 2:хотя записи DNS настроены правильно, клиентский преобразователь, рабочий стол, на котором работает ваш браузер, может указывать на другой IP-адрес. Проверьте, например, нслукап
и копать землю
что разрешает клиентский сервер имен, и что не забывайте, что файл hostsзапись для sub.example.com переопределит DNS.
Разрешение:удалить файл hostsзапись для sub.example.com или продолжить расследование несоответствия DNS.
ни один тест не отображает ожидаемое содержимое
Заключение:Проблема на стороне сервера, а не на стороне клиента.
Нет ответа
Ссылаться на Что вызывает сообщение «Отказ в соединении»?когда выясняется, что веб-сервер вообще не отвечает на порту 80.
Перенаправить ответ
Когда веб-сервер ответит, внимательно посмотрите на этот ответ:
< HTTP/1.1 302 Найдено
< Дата: понедельник, 07 февраля 2022 г., 13:58:11 по Гринвичу
< Сервер: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
<Расположение: https://sub.example.com/some-page.html
< Длина содержимого: 216
< Тип содержимого: текст/html; кодировка = iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
...
Это довольно типичный ответ для веб-сервера, настроенного на перенаправление простого HTTP на HTTPS.
302 найдено код состояния в первом заголовке указывает на временное перенаправление. Для постоянного перенаправления, которое будет
301 Перемещено навсегда HTTP-заголовок статуса.Не совсем та же основная причина, но фактически аналогичная причина и следствие для кэшированного
Строгая транспортная безопасность HTTP
(HSTS) политика домен в списке предварительной загрузки HSTS.
Но там, где кешированные политики HSTS не должны соблюдаться в окнах «Частное/инкогнито», всегда должен применяться список предварительной загрузки HSTS, даже в окнах частного/инкогнито.
Просмотрите эти вопросы и ответы, чтобы узнать, как определить, входит ли ваш домен или ваш TLD в список предварительной загрузки HSTS:Список доменов верхнего уровня (TLD), для которых требуется HTTPS-подключение, например .dev. Разрешение:получите SSL-сертификат для sub.example.com и включите TLS.
Причина 2:
хотя записи DNS настроены правильно, клиентский преобразователь, рабочий стол, на котором работает ваш браузер, может указывать на другой IP-адрес. Проверьте, например, нслукап
и
копать землючто разрешает клиентский сервер имен, и что не забывайте, что
файл hosts
запись для sub.example.com переопределит DNS.
Разрешение:удалить /
файл hosts запись для sub.example.com или продолжить расследование несоответствия DNS.
ни один тест не отображает ожидаемое содержимое Заключение:
Проблема на стороне сервера, а не на стороне клиента. Нет ответа
Ссылаться на
Что вызывает сообщение «Отказ в соединении»?
когда выясняется, что веб-сервер вообще не отвечает на порту 80. Перенаправить ответ
Когда веб-сервер ответит, внимательно посмотрите на этот ответ:
< HTTP/1.1 302 Найдено
< Дата: понедельник, 07 февраля 2022 г., 13:58:11 по Гринвичу < Сервер: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
<Расположение: https://sub.example.com/some-page.html
< Длина содержимого: 216< Тип содержимого: текст/html; кодировка = iso-8859-1