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

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

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 домена.
Некоторые панели управления, такие как cPanel , позволяют принудительно включить перенаправление HTTPS несколькими щелчками мыши.

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

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

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

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

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

  *:80 > ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/   *:443 > ServerName example.com ServerAlias www.example.com Protocols h2 http/1.1 # SSL Configuration # Other Apache Configuration 

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

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

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

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

Обычно также требуется перенаправить HTTPS-версию сайта с www на версию без www и наоборот. Вот пример конфигурации:

  *:80 > ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/   *:443 > ServerName example.com ServerAlias www.example.com Protocols h2 http/1.1  "%{HTTP_HOST} == 'www.example.com'" > Redirect permanent / https://example.com/  # SSL Configuration # Other Apache Configuration 

Код внутри виртуального хоста 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.com/$1 [L,R=301]

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

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

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

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

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

Заключение

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

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

апач

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *