Простой редирект или всегда ssl в apache.

Аватар пользователя jura12 jura12 15 августа в 5:56

Перенастраивая систему пришлось заново генерировать сертификат к моему сайту. но почему-то certbot сгенерировал сертификат только к www.jura12.ru а jura12. остался без сертификата. Выход это создать на этот домен заглушку-редирект /etc/apache2/sites-available/jura12.ru.nohttp.conf . Вот его текст:

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

  Redirect permanent / https://www.jura12.ru/
</VirtualHost>

И все работает (в убунту 18.04)!

P.S. есть и другие решения например с помощью модуля rewrite. правильность указанного выше решения не доказана.

Комментарии

Аватар пользователя jura12 jura12 15 августа в 13:03

перегенерировал. certbot кучу файлов сделал. потом выложу. сейчас неудобно.

Аватар пользователя jura12 jura12 15 августа в 16:42

вот правильный редирект

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

#  Redirect permanent / https://www.jura12.ru/
RewriteEngine on
RewriteCond %{SERVER_NAME} =jura12.ru [OR]
RewriteCond %{SERVER_NAME} =www.jura12.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

он идет на 2 сайта, 2 идентичных кроме имени домена файла конфигурации:

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerAdmin webmaster@localhost
  ServerName www.jura12.ru
  Protocols h2 h2c http/1.1
  <IfModule mpm_itk_module>
          AssignUserId yuraxu1804 yuraxu1804
  </IfModule>
    <FilesMatch ".+\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.3-fpm-yuraxu1804.sock|fcgi://localhost"
    </FilesMatch>
  DocumentRoot /var/www/drupal9/web
  <Directory /var/www/drupal9/web/>
     Options +FollowSymlinks -MultiViews
!>     AllowOverride All
  </Directory>

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/jura12.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/jura12.ru/privkey.pem

#security headers
#Header set Content-Security-Policy "default-src 'self'; report-uri: 'https://www.jura12.ru/report' "
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
#Header always set X-Frame-Options DENY
Header set X-XSS-Protection "1; mode=block"

</VirtualHost>
</IfModule>

Аватар пользователя bsyomov bsyomov 16 августа в 1:44

А чем именно он правильнее? Smile

Смысла редиректить отдельно на https://jura12.ru и на https://www.jura12.ru просто нет.
Первый вариант редиректа был вполне верным, просто он ни коим образом не решал проблемы с отсутствием сертификата для домена... Редиректы вообще не могут помочь с этим.

В этом же наборе конфигов не хватает того виртуального хоста, который будет обрабатывать https://jura12.ru и это явная ошибка.

Все редиректы должны вести в итоге на одно и то же зеркало, например, на https://www.jura12.ru.
И нужны с http://jura12.ru и http://www.jura12.ru на https://jura12.ru, а также с https://www.jura12.ru на https://jura12.ru.
Ну или наоборот, если выбран основным c www, что впрочем, странное решение.

Правильнее тут только то, что сохраняется uri при редиректе, на самом деле, и это важно.

P.S. Кстати, mpm-itk не нужен при fastcgi. Нужен worker или даже event, это будет куда эффективнее.
А mpm-itk нужен с mod-php, чтобы менять пользователя из под которого выполняется скрипт.

P.P.S. Да и вообще стоит выкинуть тут апач, не надо за него цепляться. Какой-нибудь nginx намного удачнее в такой связке.

Аватар пользователя jura12 jura12 16 августа в 2:57

начну с конца.
1. mpm-itk согласен что надо выбросить. оставил для памяти если вдруг придется возвратиться. я не все параметры помню.
2. согласен про nginx. как наиграюсь то перейду. пока есть нормальные наработки в апаче.
3. "Все редиректы должны вести в итоге на одно и то же зеркало" была такая мысль сделать. если советуете то наверно так и сделаю.

"В этом же наборе конфигов не хватает того виртуального хоста, который будет обрабатывать https://jura12.ru и это явная ошибка." тут вы неправильно поняли. я написал что у меня 2 одинаковых скрипта. и привел только один.

в общем приведу последний 3й вариант 3х конфигов когда все ведут на один конфиг.

Аватар пользователя bsyomov bsyomov 16 августа в 12:19

Если он такой же, то это тоже не то - в нём должен быть редирект, или в https://www. должен быть редирект. Т.е. должен быть один рабочий конфиг с обработчиками и две "заглушки" с редиректами.