Поиск по сайту:
Жизнь – игра. Задумано плохо, но графика потрясающая. (Неизвестный автор)

Перенаправление HTTP на HTTPS в Apache

04.01.2020
Перенаправление HTTP на HTTPS в Apache

HTTP-сервер Apache является одним из самых популярных веб-серверов в мире. Это кросс-платформенный HTTP-сервер с открытым исходным кодом, который обслуживает большой процент веб-сайтов в Интернете. Apache предоставляет множество мощных функций, которые можно расширить с помощью дополнительных модулей.

Если вы являетесь владельцем сайта или системным администратором, скорее всего, вы имеете дело с Apache на регулярной основе. Одна из наиболее распространенных задач, которые вы, вероятно, будете выполнять, — это перенаправление трафика HTTP на защищенную (HTTPS) версию вашего сайта.

В отличие от HTTP, где запросы и ответы отправляются и возвращаются в виде открытого текста, HTTPS использует TLS/SSL для шифрования связи между клиентом и сервером.

Есть много преимуществ использования HTTPS над HTTP, таких как:

  • Все данные зашифрованы в обоих направлениях. В результате конфиденциальная информация не может быть прочитана в случае перехвата.
  • Google Chrome и все другие популярные браузеры будут помечать ваш сайт как безопасный.
  • HTTPS позволяет использовать протокол HTTP/2, что значительно повышает производительность сайта.
  • Google предпочитает сайты HTTPS. Ваш сайт будет оцениваться лучше, если будет обслуживаться через HTTPS.

В этой статье рассказывается, как перенаправить HTTP-трафик на HTTPS в Apache.

Есть несколько способов перенаправить на HTTPS в Apache. Если у вас есть root-доступ к серверу Linux, на котором работает Apache, предпочтительным способом является настройка перенаправления в файле конфигурации виртуального хоста домена. В противном случае вы можете настроить перенаправление в файле .htaccess домена.

Читать  Как заблокировать или разблокировать запросы ping на Ubuntu Server 20.04 LTS

Некоторые панели управления, такие как cPanel, позволяют принудительно перенаправлять HTTPS несколькими щелчками мыши.

 

Перенаправить HTTP на HTTPS с помощью виртуального хоста

Apache Virtual Hosts определяет настройки одного или нескольких доменов, размещенных на сервере. В директиве виртуального хоста вы можете указать корневой каталог документа сайта (каталог, содержащий файлы сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL, настроить перенаправление и многое другое.

Обычно, когда сертификат SSL установлен в домене, у вас будет две директивы виртуального хоста для этого домена. Первый — для HTTP-версии сайта на порту 80, а второй — для HTTPS-версии на порту 443.

В дистрибутивах Red-Hat, таких как CentOS и Fedora, файлы виртуальных хостов хранятся в /etc/httpd/conf.d. В Debian и его производных, таких как Ubuntu, файлы хранятся в каталоге /etc/apache2/sites-available.

Чтобы перенаправить веб-сайт на HTTPS, используйте директиву Redirect, как показано в примере ниже:

<VirtualHost *:80> 
  ServerName example.ru
  ServerAlias www.example.ru

  Redirect permanent / https://example.ru/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.ru
  ServerAlias www.example.ru

  Protocols h2 http:/1.1

  # SSL Configuration

  # Other Apache Configuration

</VirtualHost>

 

Давайте объясним код. Мы используем две директивы виртуального хоста, одну для HTTP и одну для HTTPS-версии сайта.

  • VirtualHost *:80 — Сервер Apache прослушивает входящие соединения через порт 80 (HTTP) для указанного домена.
  • VirtualHost *:443 — Сервер Apache прослушивает входящие соединения через порт 443 (HTTPS) для указанного домена.

Директивы ServerName и ServerAlias с указанием доменных имен виртуального хоста. Убедитесь, что вы заменили его своим доменным именем.

Читать  6 способов найти свой частный IP-адрес в CentOS 8

Выделенная строка Redirect permanent / https://example.ru/ внутри виртуального хоста HTTP перенаправляет трафик на HTTPS-версию сайта.

Как правило, вы также хотите перенаправить HTTPS www-версию сайта на не-www или наоборот. Вот пример конфигурации:

<VirtualHost *:80> 
  ServerName example.ru
  ServerAlias www.example.ru

  Redirect permanent / https://example.ru/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.ru
  ServerAlias www.example.ru

  Protocols h2 http:/1.1

  <If "%{HTTP_HOST} == 'www.example.ru'">
    Redirect permanent / https://example.ru/
  </If>

  # Конфигурации SSL

  # Другие Конфигурация Apache

</VirtualHost>

Код внутри виртуального хоста HTTPS (выделенные строки) проверяет, содержит ли заголовок запроса домен www и перенаправляет его на версию без www.

Всякий раз, когда вы вносите изменения в файлы конфигурации, вам нужно перезапустить или перезагрузить службу Apache, чтобы изменения вступили в силу:

  • Debian и Ubuntu:
    sudo systemctl reload apache2
  • CentOS и Fedora:
    sudo systemctl reload httpd

 

Перенаправить HTTP на HTTPS, используя .htaccess

Файл конфигурации .htaccess для каждого каталога для веб-сервера Apache. Этот файл можно использовать для определения того, как Apache обслуживает файлы из каталога, в котором находится файл, а также для включения/отключения дополнительных функций.

Обычно файл .htaccess помещается в корневой каталог домена, но вы можете иметь другие файлы .htaccess в подкаталогах.

Этот метод требует, чтобы модуль mod_rewrite был загружен на сервер Apache. Этот модуль загружается по умолчанию на большинстве серверов. Если возможно, предпочтите создание перенаправления на виртуальном хосте, потому что это проще и безопаснее.
Чтобы перенаправить весь HTTP-трафик на HTTPS, откройте корневой файл .htaccess и добавьте в него следующий код:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.ru/$1 [L,R=301]

 

Читать  Как установить заголовки Linux в Kali Linux

Вот что означает код:

  • RewriteEngine On — включает возможности перезаписи.
  • RewriteCond %{HTTPS} off — проверяет HTTP-соединение и, если условие выполнено, выполняется следующая строка.
  • RewriteRule ^(.*)$ https://example.ru/$1 [L,R=301]- перенаправить HTTP на HTTPS с кодом состояния 301 (постоянно перемещено). Убедитесь, что вы изменили доменное имя.

В приведенном ниже примере есть дополнительное условие, которое проверяет, начинается ли запрос www. Используйте его, чтобы заставить всех посетителей использовать HTTPS-версию сайта без www:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.ru/$1 [L,R=301]

 

При редактировании файла .htaccess вам не нужно перезагружать сервер, потому что Apache читает файл при каждом запросе.

 

Вывод

В Apache предпочтительным способом перенаправления HTTP на HTTPS является настройка перенаправления 301 на виртуальном хосте домена.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


5 2 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Algoadm

Автору человеческое спасибо

Это может быть вам интересно


Рекомендуемое
Контекстное таргетирование снова на повестке дня брендов и цифровых рекламодателей.…

Спасибо!

Теперь редакторы в курсе.