редирект с http на https apache
Перенаправить HTTP на HTTPS в Apache
HTTP-сервер Apache — один из самых популярных веб-серверов в мире. Это кроссплатформенный HTTP-сервер с открытым исходным кодом, который обслуживает большую часть веб-сайтов в Интернете. Apache предоставляет множество мощных функций, которые можно расширить с помощью дополнительных модулей.
Если вы владелец веб-сайта или системный администратор, скорее всего, вы регулярно имеете дело с Apache. Одна из наиболее распространенных задач, которую вы, вероятно, будете выполнять, — это перенаправление HTTP-трафика на защищенную (HTTPS) версию вашего веб-сайта.
В отличие от HTTP, где запросы и ответы отправляются и возвращаются в виде открытого текста, HTTPS использует TLS / SSL для шифрования связи между клиентом и сервером.
Использование HTTPS над HTTP дает множество преимуществ, например:
В этом руководстве рассказывается, как перенаправить HTTP-трафик на HTTPS в Apache.
Перенаправить HTTP на HTTPS с помощью виртуального хоста
Виртуальные хосты Apache определяют настройки одного или нескольких доменов, размещенных на сервере. В директиве виртуального хоста вы можете указать корень документа сайта (каталог, содержащий файлы веб-сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL, настроить перенаправление и многое другое.
Обычно, когда сертификат SSL установлен в домене, у вас будет две директивы виртуального хоста для этого домена. Первый для HTTP-версии сайта на порту 80, а второй для версии HTTPS на порту 443.
Чтобы перенаправить веб-сайт на HTTPS, используйте директиву Redirect как показано в примере ниже:
Поясним код. Мы используем две директивы виртуального хоста: одну для HTTP и одну для HTTPS-версии сайта.
Директивы ServerName и ServerAlias определяют доменные имена виртуального хоста. Убедитесь, что вы заменили его на свое доменное имя.
Выделенная строка « Redirect permanent / https://example.com/ внутри виртуального HTTP-хоста» перенаправляет трафик на HTTPS-версию сайта.
Обычно вы также хотите перенаправить HTTPS-версию сайта с www на не-www или наоборот. Вот пример конфигурации:
Код внутри виртуального хоста HTTPS (выделенные строки) проверяет, содержит ли заголовок запроса домен www, и перенаправляет на версию без www.
Каждый раз, когда вы вносите изменения в файлы конфигурации, вам необходимо перезапустить или перезагрузить службу Apache, чтобы изменения вступили в силу:
.htaccess — это файл конфигурации для каждого каталога веб-сервера Apache. Этот файл можно использовать для определения того, как Apache обслуживает файлы из каталога, в котором они размещены, а также для включения / отключения дополнительных функций.
Этот метод требует, чтобы модуль mod_rewrite был загружен на сервер Apache. Этот модуль загружается по умолчанию на большинстве серверов. Если возможно, предпочитайте создание перенаправления на виртуальном хосте, потому что это проще и безопаснее.
Вот что означает код:
Выводы
В Apache предпочтительным способом перенаправления HTTP на HTTPS является настройка перенаправления 301 на виртуальном хосте домена.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
linux-notes.org
Хотел бы рассказать о том как можно перенаправить любой запрос HTTP на веб-сервере на HTTPS. Это не очень сложно и я ничего нового не расскажу кто это знает, но для новичка — будет полезным. В своей теме «Перенаправление HTTP на HTTPS для Apache в Unix/Linux» я расскажу как это можно сделать.
Для примера, я возьму свой сайт http://linux-notes.org и сделаю перенаправление на https://linux-notes.org
Для начала открываем файл с конфигурацией (для разных Linux ОС файл с конфигурациями может лежать в другом месте):
Убедитесь что модуль mod_rewrite.so загружен (имеется строчка):
Если ее нет, то пропишите.
Перенаправление HTTP на HTTPS для Apache в Unix/Linux
Прописываем в свой файл с конфигурацией:
PS: Лучше это сделать в файле htaccess (в домашней директории самого сайта)!
Принудительное перенаправление HTTP на HTTPS для Apache в Unix/Linux
Не забудьте заменить www. linux-notes.org на ваш домен.
Не забудьте заменить linux-notes\.org с вашим доменом. Кроме того, вам нужно заменить www. linux-notes.org с вашим действительным именем домена.
Если вы хотите заставить принудительно использовать SSL на определенную папку, то пропишите:
После чего, необходимо перезапустить службу с apache:
Это для rpm’s ОС, а для deb’s — это выглядит так:
PS: Если прописать в htaccess, то перезапускать web-сервер не нужно.
На этом все, статья «Перенаправление HTTP на HTTPS для Apache в Unix/Linux» завершена.
Настройка Apache + SSL для работы сайта по HTTPS
Инструкция написана для операционных систем на базе UNIX.
Шаг 1. Создание сертификата
Для боевого сервера, сертификат должен быть получен от доверенного центра сертификации — либо локального для компании, либо коммерческого. Или получен бесплатно от Let’s Ecnrypt.
Для тестовой среды можно сгенерировать самоподписанный сертификат. Для этого сперва переходим в рабочую папку.
а) на Red Hat / CentOS:
б) на Debian / Ubuntu:
Создаем папку для сертификатов и переходим в нее:
И генерируем сертификат:
* в данном примере созданы открытый и закрытый ключи на 4 года (1461 день); значения параметра subj могут быть любыми в рамках тестирования.
Шаг 2. Установка модуля SSL для Apache
Прежде, чем устанавливать модуль, выполняем команду:
Если видим строчку, на подобие:
Спускаемся к шагу 3 данной инструкции.
Иначе, устанавливаем httpd ssl_module.
yum install mod_ssl
б) Для Ubuntu/Debian:
Открываем файл конфигурации apache:
* подразумевается, что используется apache 2.4.
Находим и снимаем комментарии со следующих строчек:
.
LoadModule ssl_module libexec/apache24/mod_ssl.so
.
Include etc/apache24/extra/httpd-ssl.conf
.
И ставим комментарии в следующих строках:
#
#SSLRandomSeed startup builtin
#SSLRandomSeed connect builtin
#
Чтобы настройки применились, необходимо перезапустить веб-сервер одной из команд:
systemctl restart httpd
systemctl restart apache2
service apache2 restart
* первая, как правило, используется в системах на базе RPM, вторая — DEB, третья — BSD.
Шаг 3. Настройка Apache
Выходим из папки ssl:
Открываем файл с настройкой виртуальный доменов.
* где site.conf — конфигурационный файл для конкретного сайта
В открытый файл добавляем следующее:
ServerName site.ru
DocumentRoot /var/www/apache/data
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
* где ServerName — домен сайта; DocumentRoot — расположение файлов сайта в системе; SSLCertificateFile и SSLCertificateKeyFile — пути до файлов ключей, которые были сгенерированы на шаге 1.
Проверяем корректность настроек в Apache:
Перечитываем конфигурацию apache:
Шаг 4. Проверка работоспособности
Открываем браузер и переходим на наш сайт, добавив https://. При использовании самоподписного сертификата (как в нашем случае), обозреватель выдаст предупреждение, что передача данных не безопасна. Подтверждаем наше намерение открыть сайт. Если все работает, переходим к шагу 5.
Если сайт не заработал, пробуем найти причину по log-файлу. Как правило, он находится в каталоге /var/log/apache или /var/log/httpd.
Шаг 5. Настройка редиректа
Чтобы все запросы по http автоматически перенаправлялись на https, необходимо настроить перенаправление (redirect). Есть несколько способов это сделать.
В конфигурационном файле
Открываем файл с настройкой виртуальных доменов (как в шаге 3) и дописываем следующее:
ServerName site.ru
RewriteEngine On
RewriteCond %
RewriteRule (.*) https://%
* в конкретном примере, мы перенаправили все запросы для сайта site.ru.
** обратите особое внимание, что если у Вас уже есть VirtualHost *:80 для настраиваемого сайта, необходимо его закомментировать или отредактировать.
Установка модуля rewrite
Чтобы перенаправление работало в Apache, необходимо установить модуль rewrite.
а) в CentOS открываем конфигурационный файл и проверяем наличие строки:
LoadModule rewrite_module modules/mod_rewrite.so
* если ее нет, добавляем; если она закомментирована, снимаем комментарий.
systemctl restart httpd
systemctl restart apache2
Apache + NGINX
При использовании веб-сервера на базе и Apache и NGINX, как правило, наружу смотрит последний. В таком случае, именно он будет отвечать на http-запросы, и в таком случае нужно настраивать SSL на NGINX.
Как настроить Apache для работы по HTTPS (SSL)
Перенаправление Apache и Nginx
Статья давно не обновлялась, поэтому информация могла устареть.
Содержание
Apache
Подключения модуля mod_rewrite
Для включения перенаправления средствами Apache, достаточно чтобы модуль mod_rewrite.so был загружен в Apache.
После внесения изменений в конфигурационный файл Apache, для вступления в силу этих изменений, нужно перезапустить веб сервер:
Правила Redirect
Redirect или RedirectPermanent
Главный недостаток данных правил заключается в том, что для каждого адреса необходимо прописывать новое правило. Если необходимо сделать несколько редиректов, то каждый новый редирект пишется с новой строки.
Если нужно сделать несколько редиректов, то каждый новый редирект нужно написать с новой строки.
Для перенаправления всех запросов на другой сайт вы можете использовать следующую конструкцию:
RedirectMatch
Этот редирект отличается тем, что в нем можно использовать регулярное выражение. Например, при переносе сайта с Windows на Linux, необходимо сменить все ссылки с *.php на *.aspx:
RewriteRule
Для работы данного модуля убедитесь в том, что включена опция FollowSymLinks, эту функцию нужно прописать в конфигурационном файле Apache или в файле .htaccess как указано ниже.
Рассмотрим самые распространённые варианты её использования.
Редирект с одного сайта на другой
Редирект с www на без www
Или более понятный синтаксис
Вы можете использовать любой.
Редирект с без www на www
Перенаправление домена с https на http
Для того, чтобы данное перенаправление работало, должен использоваться только Web-сервер Apache. При использовании связки Nginx+Apache будет возникать ошибка циклической переадресации. Поэтому редирект нужно будет настраивать именно в Nginx
Перенаправление домена с http на https
Для того, чтобы данное перенаправление работало, должен использоваться только Web-сервер Apache. При использовании связки Nginx+Apache будет возникать ошибка циклической переадресации. Поэтому редирект нужно будет настраивать именно в Nginx
Nginx
Модуль ngx_http_rewrite_module, необходимый для настройки перенаправлений, он устанавливается автоматически вместе с Nginx.
Редирект 301 с www.domain.com на domain.com
Для Nginx вам нужно создать две секции server в конфигурационный файл, одна для домена с www, вторая для домена без www:
Секция server для редиректа:
Секция server, где находятся основные настройки домена:
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно перезапустить веб сервер.
Редирект 301 с domain.com на www.domain.com
Для Nginx вам нужно создать две секции server в конфигурационный файл, одна для домена без www, вторая для домена с www.
Секция server для редиректа:
Секция server, где находятся основные настройки домена.
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно перезапустить веб сервер.
Редирект 301 с https на http
Для Nginx вам нужно создать две секции server в конфигурационный файл, одна для https(443 порт), вторая для http(80 порт).
Секция server для открытия по https(443 порт) и настройки редиректа:
Секция server, для открытия по http(80 порт), где находятся основные настройки домена.
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно перезапустить веб сервер.
Редирект 301 с http на https
Для Nginx вам нужно создать две секции server в конфигурационный файл, одна для http(80 порт), вторая для https(443 порт).
Для нового домена в конф. файле nginx
Секция server, для открытия по http(80 порт) и настройки перенаправления:
Секция server, для открытия по https(443 порт), где находятся основные настройки домена.
Для существующего домена в конф. файле nginx
Если вы вносите изменения в существующую секцию конф. файла nginx делайте это так: Из основной секции домена удалите строку вида
И создайте новую секцию server такого вида:
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно его перезапустить так:
Как перенаправить сайт с HTTP на HTTPS?
HTTPS должен быть везде, и в последнее время Google рассматривает это как сигнал ранжирования для результатов своей поисковой системы.
Есть две основные причины, по которым вам следует подумать о защите своего сайта с помощью SSL-сертификата.
Если вас беспокоит стоимость, то позвольте напомнить вам, что вы можете получить SSL-сертификат БЕСПЛАТНО от многих эмитентов. И большая часть общего хостинга предлагает бесплатный SSL.
1. Перенаправление на HTTPS в Apache
Сконфигурированный веб-сайт должен иметь возможность перенаправления и доступа по https.
2. Перенаправление на HTTPS в Nginx
Войдите на веб-сервер Nginx и создайте резервную копию файла nginx.conf или default.conf файла (независимо от того, какой файл вы используете для директивы сервера)
Перезапустите Nginx, чтобы протестировать сайт.
3. Перенаправление на HTTP в Cloudflare
Если вы используете Cloudflare для повышения производительности и безопасности, то перенаправить веб-сайт через HTTPS очень просто.
Есть еще один способ, с помощью правила страницы.
Это займет несколько секунд, и у вас все настроено, чтобы ваш сайт был доступен через https.
4. Перенаправление на HTTPS в cPanel
Я предполагаю, что вы используете это на платформе общего хостинга. Во-первых, вы должны убедиться, что хостинг-провайдер предлагает SSL и включен для вашего сайта.
Примечание: если вы уже видите «RewriteEngine On» в существующем файле, вам не нужно дублировать его
5. Перенаправление на HTTPS в SUCURI
SUCURI предлагает БЕСПЛАТНЫЙ сертификат по плану WAF, и вы можете включить его, перейдя на вкладку HTTPS / SSL.
Сначала выберите Полный HTTPS (Full HTTPS) в режиме SSL.
Во-вторых, выберите HTTPS only site в перенаправлении протокола.
Сохраните конфигурацию, и через несколько секунд ваш сайт будет доступен через https.
Заключение
После настройки перенаправления убедитесь, что все ресурсы загружаются через HTTPS.