Назад | Перейти на главную страницу

Как перенаправить весь трафик сайта на HTTPS в Ubuntu с Apache2

Итак, у меня есть сервер Ubuntu, на котором запущен Apache 2, и я хочу перенаправить весь трафик на https. Ниже приведен файл конфигурации, доступный для сайтов (с замененным доменным именем.

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent "/" "https://example.com/"
</VirtualHost>

<VirtualHost *:443>
 ServerAdmin example@emailcomp.com
 DocumentRoot /var/www/personal/html/
 ServerName https://example.com
 ServerAlias https://www.example.com

    <IfModule mod_headers.c>
            Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
    </IfModule>

 <Directory /var/www/personal/html/>
    Options +FollowSymlinks
    AllowOverride All
    Require all granted
      <IfModule mod_dav.c>
        Dav off
      </IfModule>
    SetEnv HOME /var/www/personal/html
    SetEnv HTTP_HOME /var/www/personal/html
 </Directory>

 ErrorLog ${APACHE_LOG_DIR}/personal-error.log
 CustomLog ${APACHE_LOG_DIR}/personal-access.log combined

 ServerAlias example.com
 SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
 Include /etc/letsencrypt/options-ssl-apache.conf
 </VirtualHost>

https://example.com определенно работает и зашифрован. Как можно переписать конфиг для перенаправления всего трафика на https?

На ваш вопрос уже есть ответ: ЭТО делает то, что вы пытаетесь достичь:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent "/" "https://example.com/"
</VirtualHost>

Тем не мение, ServerNamehttps://example.com неправильно: вы не должны включать протокол здесь или в свой ServerAlias. Это <VirtualHost *:443> который делает его виртуальным хостом HTTPS. Если у тебя когда-нибудь есть https://example.com для работы с этой конфигурацией, вероятно, потому что у вас также есть ServerAlias example.com позже в конфигурации, но вы не должны указывать эти директивы дважды в одном и том же <VirtualHost> блок тоже.

Это заставляет меня задуматься, если это sites-available config всегда является пользователем, т.е.

  • Включили ли вы его (используя a2ensite или вручную создав символическую ссылку в sites-enabled)?
  • Вы перезапускали Apache после этой модификации?

(Кстати. Как http://www.example.com перенаправляет на канонический https://example.com/, было бы неплохо перенаправить https://www.example.com/ в то же место тоже.)