виртуальные хосты Apache

phpBB но не только...

Модераторы: Olej, adminn

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 12:58

Эта тема только фиксация конфигурационных файлов виртуальных хостов форума в связи с поялением новых 2-х URL форума, в альтернативной доменной зоне: TODO.

Сервер:

Код: Выделить всё

olej@277938:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 2e:49:10:b4:b2:02 brd ff:ff:ff:ff:ff:ff
    inet 90.156.230.27/24 brd 90.156.230.255 scope global dynamic eth0
       valid_lft 74794sec preferred_lft 74794sec
    inet6 fe80::2c49:10ff:feb4:b202/64 scope link 
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet6 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::d86f:9577:d828:cb4d/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
IPv6 обеспечивается mesh-сетью Yggdrasil:

Код: Выделить всё

olej@277938:~$ systemctl status yggdrasil
● yggdrasil.service - yggdrasil
   Loaded: loaded (/etc/systemd/system/yggdrasil.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-04-04 02:23:06 MSK; 5 days ago
  Process: 7920 ExecStartPre=/sbin/modprobe tun (code=exited, status=0/SUCCESS)
 Main PID: 7921 (yggdrasil)
    Tasks: 9 (limit: 1149)
   Memory: 20.2M
   CGroup: /system.slice/yggdrasil.service
           └─7921 /usr/bin/yggdrasil -useconffile /etc/yggdrasil.conf

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 13:28

VirtualHost Examples
Изображение
Настройка виртуальных хостов Apache
Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:
- /etc/apache2/sites-available
- /etc/apache2/sites-enabled
Мы можем вручную создать ссылку или использовать уже заготовленную команду:

Код: Выделить всё

sudo a2ensite site1.ru

Код: Выделить всё

olej@277938:~$ which a2ensite
olej@277938:~$

root@277938:/etc/apache2/sites-available# which a2ensite
/usr/sbin/a2ensite
Apache2 IPv6 Virtual Host Configuration (Ubuntu Server)
Как включить IPV6 в Apache
written by itisgood 04.03.2019

Код: Выделить всё

SSL Certificates with Apache on Debian & Ubuntu

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 13:35

Olej писал(а):
09 апр 2023, 12:58
в связи с поялением новых 2-х URL форума, в альтернативной доменной зоне
Сначала то, что касается основного URL=https://linux-ru.ru/index.php + то что успешно работает неизменно года 4 + то что менятья, именно поэтому, никогда не будет (даже если что-то кажется не самым удачным)...

Это сами конфиг файлы виртуальных хостов (из числа доступных, вообще "заготовленных" ... но не активированных):

Код: Выделить всё

olej@277938:/etc/apache2/sites-available$ pwd
/etc/apache2/sites-available

olej@277938:/etc/apache2/sites-available$ ls -l linux-ru.ru*
-rw-r--r-- 1 root root 420 апр  8 21:31 linux-ru.ru.conf
-rw-r--r-- 1 root root 495 апр  8 21:32 linux-ru.ru-le-ssl.conf
А это - ссылки на эти конфиг файлы, делающие их актуальными, активирующие их:

Код: Выделить всё

olej@277938:/etc/apache2/sites-enabled$ pwd
/etc/apache2/sites-enabled

olej@277938:/etc/apache2/sites-enabled$ ls -l linux-ru.ru*
lrwxrwxrwx 1 root root 35 дек 21  2019 linux-ru.ru.conf -> ../sites-available/linux-ru.ru.conf
lrwxrwxrwx 1 root root 52 дек 31 11:08 linux-ru.ru-le-ssl.conf -> /etc/apache2/sites-available/linux-ru.ru-le-ssl.conf

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 13:47

Olej писал(а):
09 апр 2023, 13:35
конфиг файлы виртуальных хостов
- для HTTP - http://linux-ru.ru/index.php - такой доступ не допускается, и для него сразу же произойдёт переадресания к HTTPS :!:

Код: Выделить всё

olej@277938:/etc/apache2/sites-available$ cat linux-ru.ru.conf 
<VirtualHost *:80>
ServerName linux-ru.ru
ServerAlias www.linux-ru.ru
ServerAdmin guselnikov.maks@gmail.com
DocumentRoot /var/www/linux-ru.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.linux-ru.ru [OR]
RewriteCond %{SERVER_NAME} =linux-ru.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
- для HTTPS - https://linux-ru.ru/index.php

Код: Выделить всё

olej@277938:/etc/apache2/sites-available$ cat linux-ru.ru-le-ssl.conf 
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName linux-ru.ru
ServerAlias www.linux-ru.ru
ServerAdmin guselnikov.maks@gmail.com
DocumentRoot /var/www/linux-ru.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/linux-ru.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/linux-ru.ru/privkey.pem
</VirtualHost>
</IfModule>

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 14:08

https://linux-ru.lib/index.php - URL в альтернативном домене .lib, разрашение имени реализовано через Emercoin (EmerDNS) (OpenNIC DNS и EmerCoin):

Код: Выделить всё

olej@R420:~$ host linux-ru.lib
linux-ru.lib has address 90.156.230.27
Виртуальный хост сделан первоначально так:

Код: Выделить всё

olej@277938:/etc/apache2/sites-available$ pwd
/etc/apache2/sites-available

olej@277938:/etc/apache2/sites-available$ ls -l linux-ru.lib*
-rw-r--r-- 1 root root 1033 апр  9 02:37 linux-ru.lib.conf

Код: Выделить всё

olej@277938:/etc/apache2/sites-enabled$ pwd
/etc/apache2/sites-enabled

olej@277938:/etc/apache2/sites-enabled$ ls -l linux-ru.lib*
lrwxrwxrwx 1 root root 36 апр  7 21:35 linux-ru.lib.conf -> ../sites-available/linux-ru.lib.conf
Конфиг для виртуального хоста пока записан так:

Код: Выделить всё

root@277938:/etc/apache2/sites-available# cat linux-ru.lib.conf 
<VirtualHost *:443>
    ServerName linux-ru.lib
    ServerAlias www.linux-ru.lib
    ServerAdmin olej.tsil@gmail.com
    DocumentRoot /var/www/linux-ru.ru
    DirectoryIndex index.php
    ErrorLog /var/log/apache2/linux-ru.lib-error.log
    CustomLog /var/log/apache2/linux-ru.lib-access.log combined
    # SSL configuration
    SSLEngine On
    SSLCertificateChainFile /etc/ssl/certs/linux-ru.lib/fullchain.crt
    SSLCertificateFile /etc/ssl/certs/linux-ru.lib/cert.pem
    SSLCertificateKeyFile /etc/ssl/certs/linux-ru.lib/privkey.pem 
</VirtualHost>

<VirtualHost *:80>
    ServerName linux-ru.lib
    ServerAlias www.linux-ru.lib
    Redirect permanent / https://linux-ru.lib/
</VirtualHost>
Здесь также пока http://linux-ru.lib переадресуется в https://linux-ru.lib ... но вот таким другим способом.

Сертификаты SSL от PostMet (см. TODO) прописаны вот здесь:

Код: Выделить всё

olej@277938:/etc/apache2/sites-available$ ls -l /etc/ssl/certs/linux-ru.lib/
итого 12
-rw-r--r-- 1 root root 1456 апр  9 01:05 cert.pem
-rw-r--r-- 1 root root 3603 апр  9 01:59 fullchain.crt
-rw-r--r-- 1 root root 1704 апр  9 01:15 privkey.pem
P.S. SSL сертификаты для сайтов в альтернативных доменах могут быть заказаны и получены у PostMet бесплатно вот по этим ссылкам следуя http://sites.emc/
If you would like to access emerDNS web-sites through https (for example - this site by URL https://sites.emc/) without browser's warning window, you need to download and install into your browser or OS the "PostMet Root CA Class 1" SSL-certificate from the page: http://www.postmet.com/securepost.

To request SSL-certificate for your site within emerDNS, send your CSR (Certificate Signing Request) to Postmet: https://www.postmet.com/csr/
Это альтернативный DNS, но можете воспользоваться подсказкой ;-) :

Код: Выделить всё

olej@R420:~/2023/Yggdrasil$ host sites.emc
sites.emc has address 208.87.98.37
sites.emc has IPv6 address 2a0b:7080:20::1:2c4e
И далее:
Welcome! Follow the instructions to obtain certificate for your domain(s):

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 14:29

Olej писал(а):
09 апр 2023, 14:08
пока http://linux-ru.lib переадресуется в https://linux-ru.lib
Позже, при тестировании доступа, один из авторов Emercoin и альтернативного DNS разрешения имён высказал следующее соображение:
Про автоматический переброс на https для .lib.
Не уверен, что так - хорошо. Ибо чтоб оно нормально работало, надо людям загрузить корень от Постмета, или включить сайт в исключения для браузера.
Некоторые люди такого не любят - ни того, ни другого. В результате, "гостей форума", которые только по http смотрят - такое решение будет раздражать.
Но то Ваше дело, что лучше.
Я лично считаю, если анонимус пришёл по http, и не хочет логиниться - пусть он свой http и получает. А вот если логин и тп - тогда да, перебрасывать на https.
Но смотрите сами, как оно лучше, с Вашей точки зрения.
Может я и не прав, и принудительный переброс - повышает безопасность, и может так оно и лучше.
И конфиг виртуальных хостов (2-х в одном файле) переписан так:

Код: Выделить всё

root@277938:/etc/apache2/sites-available# cat linux-ru.lib.conf 
<VirtualHost 90.156.230.27:443>
    ServerName linux-ru.lib
    ServerAlias www.linux-ru.lib
    ServerAdmin olej.tsil@gmail.com
    DocumentRoot /var/www/linux-ru.ru
    DirectoryIndex index.php
    ErrorLog /var/log/apache2/linux-ru.lib-error.log
    CustomLog /var/log/apache2/linux-ru.lib-access.log combined
    # SSL configuration
    SSLEngine On
    SSLCertificateChainFile /etc/ssl/certs/linux-ru.lib/fullchain.crt
    SSLCertificateFile /etc/ssl/certs/linux-ru.lib/cert.pem
    SSLCertificateKeyFile /etc/ssl/certs/linux-ru.lib/privkey.pem 
</VirtualHost>

<VirtualHost 90.156.230.27:80>
    ServerName linux-ru.lib
    ServerAlias www.linux-ru.lib
    ServerAdmin olej.tsil@gmail.com
    DocumentRoot /var/www/linux-ru.ru
    ErrorLog /var/log/apache2/linux-ru.lib-error.log
    CustomLog /var/log/apache2/linux-ru.lib-access.log combined
</VirtualHost>

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 14:40

Olej писал(а):
09 апр 2023, 14:29
конфиг виртуальных хостов (2-х в одном файле) переписан так:
У Apache конфиг довольно громоздкий, поэтому после лбой правки проверяем на корректность:

Код: Выделить всё

root@277938:/var/log/apache2# apachectl configtest
Syntax OK
Для вступления любой редактуры конфигов в силу обычно предлагают перезапустить сервис:

Код: Выделить всё

root@277938:/etc/apache2/sites-enabled# systemctl restart apache2
Но для Apache предлагают ещё и такой способ:

Код: Выделить всё

root@277938:/etc/apache2/sites-available# apachectl -k graceful
Я воспользуюсь этим способом ... хотя бы для проверки...

Код: Выделить всё

root@277938:/etc/apache2/sites-available# systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2023-04-09 02:44:51 MSK; 11h ago
     Docs: https://httpd.apache.org/docs/2.4/
  Process: 27428 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 27432 (apache2)
    Tasks: 10 (limit: 1149)
   Memory: 345.8M
   CGroup: /system.slice/apache2.service
           ├─27432 /usr/sbin/apache2 -k start
           ├─31420 /usr/sbin/apache2 -k start
           ├─31421 /usr/sbin/apache2 -k start
           ├─31422 /usr/sbin/apache2 -k start
           ├─31423 /usr/sbin/apache2 -k start
           ├─31424 /usr/sbin/apache2 -k start
           ├─31425 /usr/sbin/apache2 -k start
           ├─31427 /usr/sbin/apache2 -k start
           ├─31429 /usr/sbin/apache2 -k start
           └─31435 /usr/sbin/apache2 -k start

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 14:48

Olej писал(а):
09 апр 2023, 14:40
воспользуюсь этим способом
Доступность по HTTP (незащищённого соединения на порт 80) проверять могу так:

Код: Выделить всё

olej@R420:~$ wget http://linux-ru.lib:80 -O - > /dev/null
--2023-04-09 15:19:18--  http://linux-ru.lib/
Распознаётся linux-ru.lib (linux-ru.lib)… 90.156.230.27
Подключение к linux-ru.lib (linux-ru.lib)|90.156.230.27|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: нет данных [text/html]
Сохранение в: ‘STDOUT’

-                                       [  <=>                                                               ]  51,38K   230KB/s    за 0,2s    

2023-04-09 15:19:19 (230 KB/s) - записан в stdout [52616]
Только при таком новом конфиге нарушается защищённый доступ по HTTPS и даже перезапукс Apache здесь ничего не добавляет:

Код: Выделить всё

root@277938:/etc/apache2/sites-available# systemctl restart apache2

root@277938:/etc/apache2/sites-available# systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2023-04-09 14:48:11 MSK; 1s ago
     Docs: https://httpd.apache.org/docs/2.4/
  Process: 32258 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 32263 (apache2)
    Tasks: 6 (limit: 1149)
   Memory: 24.5M
   CGroup: /system.slice/apache2.service
           ├─32263 /usr/sbin/apache2 -k start
           ├─32264 /usr/sbin/apache2 -k start
           ├─32265 /usr/sbin/apache2 -k start
           ├─32266 /usr/sbin/apache2 -k start
           ├─32267 /usr/sbin/apache2 -k start
           └─32268 /usr/sbin/apache2 -k start

апр 09 14:48:11 277938.local systemd[1]: Starting The Apache HTTP Server...
апр 09 14:48:11 277938.local systemd[1]: Started The Apache HTTP Server.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 15:20

Olej писал(а):
09 апр 2023, 14:48
Только при таком новом конфиге нарушается защищённый доступ по HTTPS и даже перезапукс Apache здесь ничего не добавляет:
Переписал (незначительно) конфиг:

Код: Выделить всё

olej@277938:/etc/apache2/sites-enabled$ cat linux-ru.lib.conf 
<VirtualHost *:443>
    ServerName linux-ru.lib
    ServerAlias www.linux-ru.lib
    ServerAdmin olej.tsil@gmail.com
    DocumentRoot /var/www/linux-ru.ru
    DirectoryIndex index.php
    ErrorLog /var/log/apache2/linux-ru.lib-error.log
    CustomLog /var/log/apache2/linux-ru.lib-access.log combined
    # SSL configuration
    SSLEngine On
    SSLCertificateChainFile /etc/ssl/certs/linux-ru.lib/fullchain.crt
    SSLCertificateFile /etc/ssl/certs/linux-ru.lib/cert.pem
    SSLCertificateKeyFile /etc/ssl/certs/linux-ru.lib/privkey.pem 
</VirtualHost>

<VirtualHost *:80>
    ServerName linux-ru.lib
    ServerAlias www.linux-ru.lib
    ServerAdmin olej.tsil@gmail.com
    DocumentRoot /var/www/linux-ru.ru
    ErrorLog /var/log/apache2/linux-ru.lib-error.log
    CustomLog /var/log/apache2/linux-ru.lib-access.log combined
</VirtualHost>
Не знаю почему так (и уже разбираться задолбался, надоело...) но:
Это защищённое HTTPS https://linux-ru.ru/index.php ... как и было:
Снимок экрана от 2023-04-09 15-12-16.png
Снимок экрана от 2023-04-09 15-12-16.png (232.85 КБ) 389 просмотров
Это защищённое HTTPS https://linux-ru.lib/index.php ... но в браузере не добавлен корневой сертификат, поэтому ему пришлось (пока) добавить исключение безопасности:
Снимок экрана от 2023-04-09 15-14-14.png
Снимок экрана от 2023-04-09 15-14-14.png (231.76 КБ) 389 просмотров
Это незащищённое HTTP соединение - залогиниться тут не получится!
Снимок экрана от 2023-04-09 15-12-42.png
Снимок экрана от 2023-04-09 15-12-42.png (219.64 КБ) 389 просмотров
P.S. Кстати... Все 3 картинки выше скопированы из соседних вкладок одного браузера Firefox - из-за разных URL доступа к одному каталогу данных... А вот с одного URL HTTPS залогинится под разными именами в разных вкладках не получится.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

виртуальные хосты Apache

Непрочитанное сообщение Olej » 09 апр 2023, 15:26

Olej писал(а):
09 апр 2023, 15:20
Это защищённое HTTPS https://linux-ru.lib/index.php ... но в браузере не добавлен корневой сертификат, поэтому ему пришлось (пока) добавить исключение безопасности:

Код: Выделить всё

olej@R420:~$ wget https://linux-ru.lib:443 -O - > /dev/null
--2023-04-09 15:19:04--  https://linux-ru.lib/
Распознаётся linux-ru.lib (linux-ru.lib)… 90.156.230.27
Подключение к linux-ru.lib (linux-ru.lib)|90.156.230.27|:443... соединение установлено.
ОШИБКА: невозможно проверить сертификат linux-ru.lib, выпущенный ‘CN=CA Signing Certificate,OU=pki-tomcat,O=lvm.postmet.com Security Domain’:
  Обнаружен самостоятельно подписанный сертификат.
Для небезопасного подключения к linux-ru.lib используйте параметр «--no-check-certificate».
Вот так :!:
Отлуп :!: "Обнаружен самостоятельно подписанный сертификат."
Нужно иметь установленным корневой сертификат от PostMet

Код: Выделить всё

olej@R420:~$ wget https://linux-ru.lib:443 --no-check-certificate -O - > /dev/null
--2023-04-09 15:18:54--  https://linux-ru.lib/
Распознаётся linux-ru.lib (linux-ru.lib)… 90.156.230.27
Подключение к linux-ru.lib (linux-ru.lib)|90.156.230.27|:443... соединение установлено.
ПРЕДУПРЕЖДЕНИЕ: невозможно проверить сертификат linux-ru.lib, выпущенный ‘CN=CA Signing Certificate,OU=pki-tomcat,O=lvm.postmet.com Security Domain’:
  Обнаружен самостоятельно подписанный сертификат.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: нет данных [text/html]
Сохранение в: ‘STDOUT’

-                                       [  <=>                                                               ]  51,38K   225KB/s    за 0,2s    

2023-04-09 15:18:55 (225 KB/s) - записан в stdout [52617]

Ответить

Вернуться в «Управление WEB ресурсами»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость