Рейтинг:0

Apache2 VHost для поддомена

флаг br

Несколько месяцев назад я настроил свой nextcloud на своей виртуальной машине Ubuntu 20.04.3 LTS, работающей на моем FreeNAS, следуя их руководству, так что терпите меня, я ни в коем случае не обученный гуру apache2 ;-)

Моя текущая конфигурация VHost для моего nextcloud выглядит следующим образом:

<VirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/nextcloud/
     ServerName cloud.domain.net
     ServerAlias www.cloud.domain.net

     Alias /nextcloud "/var/www/nextcloud/"

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

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

RewriteEngine on
RewriteCond %{SERVER_NAME} =cloud.domain.net [OR]
RewriteCond %{SERVER_NAME} =www.cloud.domain.net
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Недавно я настроил своего домашнего помощника и хотел предоставить удаленный доступ через приложение HASS. Я хотел перенаправить трафик, приходящий через

https://homeassistant.domain.net

Мой подход к homeassistant.conf был таким:

<VirtualHost *>
    ServerName homeassistant.domain.net

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://192.168.0.9:8123/
    ProxyPassReverse / http://192.168.0.9:8123/
    <Location />
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

К сожалению, это не работает....

Может ли кто-нибудь указать мне правильную конфигурацию, чтобы мой Home Assistant Trafic также был зашифрован ssl?

Рейтинг:0
флаг pk

Вам необходимо убедиться, что ваш Виртуальный хост заявления точно такие же. В настоящее время один из них говорит Виртуальный хост *, а другой говорит Виртуальный хост *:80. Это не правильно. Поскольку, как правило, лучше иметь номер порта, вы должны добавить :80 немного к другому Виртуальный хост линия. Это должно заставить его работать без шифрования.

Чтобы добавить HTTPS, вам нужно сделать больше. В приведенных ниже инструкциях объясняется, что делать для вашего homeassistant.domain.net домен, но вам придется повторить инструкции для вашего домена nextcloud, если вы хотите шифровать трафик и там.

Во-первых, вам понадобится сертификат.Поскольку вы говорите, что хотите «предоставить удаленный доступ», я предполагаю, что ваш сервер доступен из общедоступного Интернета; это означает, что вы можете использовать letsencrypt:

  1. Установить certbot, приложение letsencrypt для создания и установки сертификатов.

  2. Измените свой Виртуальный хост раздел, чтобы он не проксировал каталог «/.well-known», и присвойте ему DocumentRoot, добавив следующие строки

     DocumentRoot /var/www/homeassistant
     ProxyPass /.известный !
    
  3. Создайте /var/www/помощник по дому каталог, если он еще не существует.

  4. Запустите certbot, чтобы создать сертификаты:

     регистр certbot
     certbot точно --webroot -w /var/www/homeassistant -d homeassistant.domain.net
    

    Первая из этих команд зарегистрирует вас в letsencrypt; второй запросит сертификат, который будет установлен в /etc/letsencrypt.

    Примечание: certbot также имеет режим для автоматического включения SSL и установки сертификатов для вас, но я никогда не использовал его и поэтому не знаю, что именно он делает. Возможно, вы захотите поиграть с ним. Для этого используйте --apache вместо --webroot и прочтите certbot --помощь вывод. Остальная часть этого поста предполагает, что вы не сделать это и вместо этого использовать --webroot режим.

  5. Гарантировать certbot возобновить запускается периодически, чтобы ваши сертификаты автоматически обновлялись до истечения срока их действия (например, с помощью хрон).

Теперь у вас есть сертификаты в /etc/letsencrypt. Для того, чтобы включить SSL и использовать их, вам необходимо выполнить следующие шаги:

  1. Убедитесь, что mod_ssl загружается; если вы используете Debian (или одну из его производных, например Ubuntu), это можно сделать с помощью a2enmod ssl; другие системы обычно имеют необязательный файл конфигурации или что-то подобное, что вам нужно будет включить.

  2. Менять каждые Виртуальный хост заявление, так оно и говорит Виртуальный хост *: 443, для порта HTTPS.

  3. добавьте необходимые параметры для SSL в свой Виртуальный хост строфы:

     SSLEngine включен
     SSLCertificateFile /etc/letsencrypt/live/homeassistant.domain.net/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/homeassistant.domain.net/privkey.pem
    
  4. (необязательно) добавьте строфу перенаправления, чтобы простые HTTP-запросы 80 перенаправлялись на HTTPS:

     <VirtualHost *:80>
         ServerName homeassistant.domain.net
         DocumentRoot /var/www/homeassistant
         <Directory /var/www/homeassistant>
             Require all granted
             Redirect permanent / https://homeassistant.domain.net/
         </Directory>
     </VirtualHost>
    

    Это требует mod_alias, который обычно включен (но вам, возможно, придется включить его, если нет; в Debian и его производных вы должны использовать псевдоним a2enmod).

  5. (необязательно) усильте конфигурацию SSL с помощью Strict-Transport-Security и нескольких других параметров:

     Набор заголовков Strict-Transport-Security max-age=15768000
     Набор заголовков X-Frame-Options SAMEORIGIN
     Набор заголовков X-Content-Type-Options nosniff
    

    Это требует mod_headers (заголовки a2enmod).

флаг br
Привет, Воутер, спасибо за ответ - подсказка с номером порта была отличной. Я поискал дальше и заметил, что мне нужно добавить некоторые настройки в мой домашний помощник (см. это: https://community.home-assistant.io/t/home-assistant-400-bad-request-docker-proxy-solution/322163). ) У меня теперь работает Http-доступ, но с SSL-сертификатом у меня возникла проблема, которую нужно решить. Я получаю неверный ответ от certbot... `Домен: homeassistant.domain.net` `Тип: неавторизованный` `Подробности: неверный ответ от` `http://homeassistant.domain.net/.well-known/acme-challenge` `[ХХХ.ХХХ.ХХХ.ХХХ]: 404`
флаг pk
Вы перезапустили Apache после изменения файла конфигурации? Это необходимо; Apache не будет автоматически перечитывать файл конфигурации. Если вы это сделали, посмотрите, не найдете ли вы что-нибудь интересное в своих журналах ошибок...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.