Все руководства по развёртыванию Развёртывание

Как исправить предупреждения о смешанном контенте

Смешанный контент возникает, когда HTTPS-страница загружает подресурсы (изображения, скрипты, стили, шрифты) по незащищённому HTTP. Браузеры блокируют или предупреждают об этом, потому что небезопасный ресурс на защищённой странице подрывает безопасность всей страницы.

Два типа смешанного контента

ТипПримерыПоведение браузера
Активный (опасный)Скрипты, iframe, XHR, CSSБлокируется всеми браузерами
Пассивный (отображаемый)Изображения, аудио, видеоОтображается с предупреждением / ухудшенным значком замка

Активный смешанный контент может изменять страницу (злоумышленник при атаке «человек посередине» мог бы внедрить вредоносный JavaScript), поэтому браузеры полностью его блокируют. Пассивный смешанный контент менее опасен, но всё равно ухудшает индикатор безопасности.

Как найти смешанный контент

Инструменты разработчика в браузере

  1. Откройте сайт в Chrome/Firefox
  2. Откройте DevTools (F12) → вкладка Консоль
  3. Ищите ошибки вида:
    Mixed Content: The page at 'https://example.com' was loaded over HTTPS,
    but requested an insecure resource 'http://example.com/image.jpg'.

Сканирование из командной строки

curl -s https://yourdomain.com | grep -oP 'http://[^"'"'"'> ]+' | sort -u

Распространённые причины и исправления

Жёстко закодированные URL с http:// в HTML

<!-- Проблема -->
<img src="http://example.com/logo.png">

<!-- Исправление: используйте протокол-независимый или HTTPS -->
<img src="https://example.com/logo.png">
<img src="//example.com/logo.png">
<img src="/logo.png">

Лучшая практика: используйте относительные пути (/images/logo.png) везде, где возможно.

Сторонние ресурсы всё ещё на HTTP

<!-- Проблема -->
<script src="http://cdn.example.com/library.js"></script>

<!-- Исправление -->
<script src="https://cdn.example.com/library.js"></script>

Если сторонний ресурс не поддерживает HTTPS, найдите альтернативного провайдера или разместите ресурс самостоятельно.

Контент базы данных с жёстко закодированными URL

WordPress и другие CMS хранят абсолютные URL в базе данных. После миграции на HTTPS:

-- WordPress: обновление URL в записях
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://example.com', 'https://example.com');
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');

Или используйте плагин Better Search Replace.

CSS с HTTP-ссылками

/* Проблема */
background-image: url('http://example.com/bg.jpg');

/* Исправление */
background-image: url('https://example.com/bg.jpg');
background-image: url('/images/bg.jpg');

Content Security Policy (CSP) — предотвращение будущего смешанного контента

Добавьте CSP-заголовок, блокирующий HTTP-ресурсы:

Nginx:

add_header Content-Security-Policy "upgrade-insecure-requests" always;

Apache:

Header always set Content-Security-Policy "upgrade-insecure-requests"

upgrade-insecure-requests указывает браузерам автоматически преобразовывать запросы http:// в https:// — подстраховка, пока вы исправляете исходные URL.

Систематическое исправление: полный аудит сайта

Для тщательной очистки проведите аудит всего сайта:

1. Поиск HTTP-ссылок

# Сканирование всех HTML-файлов на наличие http:// URL
find /var/www/html -name '*.html' -o -name '*.php' | xargs grep -l 'http://' 2>/dev/null

# Сканирование CSS-файлов
find /var/www/html -name '*.css' | xargs grep -l 'http://' 2>/dev/null

# Сканирование JavaScript-файлов
find /var/www/html -name '*.js' | xargs grep -l 'http://' 2>/dev/null

2. Исправление URL по категориям

ИсточникМетод исправления
Собственные ресурсыИзменить на относительные пути (/images/logo.png)
Ресурсы CDNОбновить на https://cdn.example.com/...
Сторонние скриптыОбновить URL или найти HTTPS-альтернативу
Встроенный CSSПоиск и замена http://https://
Контент базы данных (WordPress)wp search-replace 'http://yourdomain.com' 'https://yourdomain.com'
Файлы шаблонов/темРедактирование исходных файлов напрямую

3. Проверка через DevTools браузера

После исправления откройте каждую страницу → DevTools (F12) → вкладка «Консоль». Чистая страница не показывает предупреждений о смешанном контенте. Значок замка должен быть сплошным (без надлома или предупреждающего треугольника).

4. Предотвращение будущего смешанного контента

Добавьте этот мета-тег в <head> вашего HTML как постоянную подстраховку:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Или установите его на уровне сервера через конфигурацию Nginx/Apache (показано выше).

Типы контента, которые часто вызывают смешанный контент

Тип контентаГде проверятьПример
Изображения<img src="http://...">Загруженные изображения, аватары, логотипы
Скрипты<script src="http://...">Аналитика, виджеты чата, рекламные скрипты
Стили<link href="http://...">Внешние шрифты, CSS-фреймворки
Шрифты@font-face { src: url("http://...") }Google Fonts (обычно без проблем), пользовательские шрифты
iframe<iframe src="http://...">Встроенные видео, карты, виджеты
XHR/Fetchfetch("http://...")API-вызовы в JavaScript
Фоновые изображенияbackground-image: url("http://...")CSS-фоны

Часто задаваемые вопросы

Повлияет ли смешанный контент на SEO?

Не напрямую. Google индексирует по протоколу URL страницы, а не подресурсов. Однако если смешанный контент вызывает предупреждения браузера или блокирует видимый контент, пользовательский опыт ухудшается — что может косвенно навредить позициям через повышенный показатель отказов.

Можно ли просто использовать upgrade-insecure-requests и не исправлять URL?

Это работает как временная мера, но исправление исходных URL лучше. CSP-заголовок зависит от поддержки браузером (все современные браузеры поддерживают, но некоторые старые клиенты — нет) и добавляет дополнительный заголовок к каждому ответу.

На моём сайте сотни жёстко закодированных HTTP-URL. Как исправить быстрее всего?

Немедленно добавьте CSP-заголовок upgrade-insecure-requests (одна строка конфигурации сервера). Затем выполните глобальный поиск и замену в кодовой базе и базе данных. Используйте grep -r 'http://' src/ для поиска жёстко закодированных URL в коде.

Похожие статьи

Развёртывание 2026-05-07
Как перенаправить HTTP на HTTPS
Принудительное перенаправление всего трафика на HTTPS с помощью серверных редиректов. Примеры конфигурации для Nginx, Apache и .htaccess с постоянными перенаправлениями 301.
Развёртывание 2026-05-08
Как установить SSL-сертификат на Nginx
Пошаговое руководство по установке SSL-сертификата на Nginx. Охватывает загрузку файлов, полную конфигурацию серверного блока, лучшие практики TLS, HTTP/2, HSTS, настройку редиректов, тестирование и устранение 6 распространённых ошибок.
SSL и сертификаты 2026-05-08
Что такое HTTPS? Полное руководство
HTTPS шифрует соединение между вашим браузером и сайтом. Узнайте, как работает HTTPS, TLS-рукопожатие, различия HTTP и HTTPS, влияние на производительность и как включить его бесплатно.
Получите бесплатный SSL-сертификат в браузере
Без установки, без аккаунта. Ваш приватный ключ никогда не покидает устройство.
Получить сертификат