Добавить в корзинуПозвонить
Найти в Дзене

Решение проблемы настройки HTTPS для сайта на FastAPI (кратко)

Задача заключалась в настройке сайта на VPS-сервере с ISPmanager, чтобы приложение на FastAPI было доступно по адресу https://dwc.ru/, заменив заглушку index.html. Изначально FastAPI-приложение работало по адресу http://dwc.ru:8000/frontend/index.html, но не поддерживало HTTPS по адресу https://dwc.ru:8000/frontend/index.html из-за отсутствия безопасного соединения. Необходимо было сделать так, чтобы фронтенд интернет-магазина отображался по https://dwc.ru/ с поддержкой HTTPS. Начальная конфигурация включала: При обращении к https://dwc.ru/ отображалась заглушка index.html, а приложение FastAPI было доступно только через незащищённый порт 8000, что не подходило для продакшена. Основные проблемы:
Оглавление

Описание задачи

Задача заключалась в настройке сайта на VPS-сервере с ISPmanager, чтобы приложение на FastAPI было доступно по адресу https://dwc.ru/, заменив заглушку index.html. Изначально FastAPI-приложение работало по адресу http://dwc.ru:8000/frontend/index.html, но не поддерживало HTTPS по адресу https://dwc.ru:8000/frontend/index.html из-за отсутствия безопасного соединения. Необходимо было сделать так, чтобы фронтенд интернет-магазина отображался по https://dwc.ru/ с поддержкой HTTPS.

Изначальная конфигурация системы

Начальная конфигурация включала:

  • Сервер: VPS с ISPmanager, где Nginx выступал фронтенд-сервером, а Apache — бэкенд-сервером на порту 8080.
  • Конфигурация Nginx (/etc/nginx/vhosts/www-root/dwc.ru.conf):Слушал порты 192.168.0.31:80 и 192.168.0.31:443 (SSL).
    Проксировал запросы на Apache (http://127.0.0.1:8080).
    Обрабатывал статические файлы и PHP-скрипты с fallback на Apache.
    Использовал SSL-сертификаты Let’s Encrypt (/var/www/httpd-cert/www-root/dwc.ru_le1.crtca и dwc.ru_le1.key).
    Перенаправлял www.dwc.ru на dwc.ru и HTTP на HTTPS.
  • Конфигурация Apache (/etc/apache2/vhosts/www-root/dwc.ru.conf):VirtualHost на 127.0.0.1:8080, обслуживающий корневую директорию /var/www/www-root/data/www/dwc.ru.
    Настроен для обработки PHP и статических файлов.
    Отображал заглушку index.html в корневой директории.
  • Приложение FastAPI:Работало на http://127.0.0.1:8000.
    Обслуживало фронтенд по адресу /frontend/index.html, доступному через http://dwc.ru:8000/frontend/index.html.
    Не было интегрировано с Nginx или Apache, что делало его недоступным по HTTPS на корневом домене.

При обращении к https://dwc.ru/ отображалась заглушка index.html, а приложение FastAPI было доступно только через незащищённый порт 8000, что не подходило для продакшена.

Проблемы и процесс решения

Основные проблемы:

  • Заглушка: Файл index.html в /var/www/www-root/data/www/dwc.ru/ отображался вместо фронтенда FastAPI.
  • HTTPS: Приложение FastAPI не было настроено для HTTPS, и прямой доступ к порту 8000 через HTTPS не работал.
  • Ошибки Nginx: Первоначальные попытки проксирования на FastAPI приводили к синтаксическим ошибкам в директивах proxy_set_header и некорректной обработке корневого пути (/).
  • Обработка корня: FastAPI возвращал JSON-ответ ({"message":"Welcome to DWC.ru API"}) для корневого пути, вместо фронтенда по адресу /frontend/index.html.

Шаги решения в статье на сайте