HTTP-сервер Apache является одним из самых популярных веб-серверов в мире. Это кросс-платформенный HTTP-сервер с открытым исходным кодом, который обслуживает большой процент веб-сайтов в Интернете. Apache предоставляет множество мощных функций, которые можно расширить с помощью дополнительных модулей.
Если вы являетесь владельцем сайта или системным администратором, скорее всего, вы имеете дело с Apache на регулярной основе. Одна из наиболее распространенных задач, которые вы, вероятно, будете выполнять, — это перенаправление трафика HTTP на защищенную (HTTPS) версию вашего сайта.
В отличие от HTTP, где запросы и ответы отправляются и возвращаются в виде открытого текста, HTTPS использует TLS/SSL для шифрования связи между клиентом и сервером.
Есть много преимуществ использования HTTPS над HTTP, таких как:
В этой статье рассказывается, как перенаправить HTTP-трафик на HTTPS в Apache.
Есть несколько способов перенаправить на HTTPS в Apache. Если у вас есть root-доступ к серверу Linux, на котором работает Apache, предпочтительным способом является настройка перенаправления в файле конфигурации виртуального хоста домена. В противном случае вы можете настроить перенаправление в файле .htaccess домена.
Некоторые панели управления, такие как cPanel, позволяют принудительно перенаправлять 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-версии сайта.
Директивы ServerName и ServerAlias с указанием доменных имен виртуального хоста. Убедитесь, что вы заменили его своим доменным именем.
Выделенная строка 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, чтобы изменения вступили в силу:
sudo systemctl reload apache2
sudo systemctl reload httpd
Файл конфигурации .htaccess для каждого каталога для веб-сервера Apache. Этот файл можно использовать для определения того, как Apache обслуживает файлы из каталога, в котором находится файл, а также для включения/отключения дополнительных функций.
Обычно файл .htaccess помещается в корневой каталог домена, но вы можете иметь другие файлы .htaccess в подкаталогах.
Этот метод требует, чтобы модуль mod_rewrite был загружен на сервер Apache. Этот модуль загружается по умолчанию на большинстве серверов. Если возможно, предпочтите создание перенаправления на виртуальном хосте, потому что это проще и безопаснее.
Чтобы перенаправить весь HTTP-трафик на HTTPS, откройте корневой файл .htaccess и добавьте в него следующий код:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://example.ru/$1 [L,R=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 на виртуальном хосте домена.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Автору человеческое спасибо