Пока у вас нет сертификата, фронтенд Apache не может принимать HTTPS‑запросы. Но это не мешает вам настроить проксирование — просто сначала всё работает через HTTP (порт 80), а после выпуска сертификата вы добавите HTTPS‑виртуальный хост.


🔧 Как проксировать без сертификата

1. Настройте виртуальный хост на 80‑м порту

Пример конфигурации /etc/apache2/sites-available/example.com.conf:

<VirtualHost *:80>
    ServerName example.com
    ServerAdmin root@skil.su

    ProxyPass / http://192.168.0.40:80/
    ProxyPassReverse / http://192.168.0.40:80/

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

👉 Здесь нет редиректа на HTTPS, потому что сертификата ещё нет.
Фронтенд принимает HTTP‑запросы и проксирует их на бэкенд.


2. Убедитесь, что модули включены

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2

3. Проверьте доступность

Откройте в браузере http://example.com — запрос должен уходить на фронтенд и проксироваться на бэкенд.


4. Выпустите сертификат

Когда DNS настроен и домен доступен извне:

sudo certbot --apache -d example.com

Certbot создаст HTTPS‑виртуальный хост (порт 443) и добавит туда сертификаты.


5. Добавьте редирект на HTTPS

После успешного выпуска сертификата можно вернуть редирект в конфиг на 80‑м порту:

<VirtualHost *:80>
    ServerName example.com
    RewriteEngine on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

📌 Итог:

  • До выпуска сертификата → фронтенд работает только на HTTP и проксирует на бэкенд.
  • После выпуска → добавляете HTTPS‑виртуальный хост и редиректите весь трафик с 80 на 443.

Итоговый текст конфигурации с использованием сертификата

<VirtualHost *:80>
    ServerName example.com
    ServerAdmin root@skil.su

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_NAME} =zhivyetravy.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAdmin root@skil.su

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/zhivyetravy.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/zhivyetravy.ru/privkey.pem

    ProxyPass / http://192.168.0.40:80/
    ProxyPassReverse / http://192.168.0.40:80/

    ErrorLog ${APACHE_LOG_DIR}/error_ssl.log
    CustomLog ${APACHE_LOG_DIR}/access_ssl.log combined
</VirtualHost>

От alex

Обучаемый.