Я пытаюсь настроить Discourse в контейнере Docker. На хост-системе (Debian) запущен сервер Apache httpd (я не могу использовать nginx, так как на Apache размещены другие сайты). Я хочу использовать mod_proxy для обратного проксирования на контейнер, который слушает порт 3000.
Текущая конфигурация Apache для этого виртуального хоста выглядит следующим образом:
Я начал только с директив ProxyPass и ProxyPassReverse, а затем по одной добавлял ProxyPreserveHost и директивы RequestHeader. Как бы я ни настраивал прокси с помощью этих директив, определённые файлы ниже корня документа возвращают ошибку 404 при доступе (например, файлы в /images и /assets).
Обратите внимание на комментарий с URL-адресом Discourse Meta, который я конвертировал из синтаксиса nginx в Apache.
Буду очень признателен за любые идеи, как заставить это работать!
HAProxy делает именно то, что мне нужно, и выглядит как очень продуманный и полезный инструмент. Спасибо за подсказку.
Однако, похоже, проблема заключалась в редактировании шаблонов web*.yml для прослушивания портов, отличных от портов по умолчанию 80 и 443. Я восстановил конфигурации по умолчанию, а затем отредактировал containser/app.yml, добавив строки, подобные следующим, и ошибки 404 исчезли:
В последнее время я очень доволен Traefik, и он автоматически выдаёт сертификаты Let’s Encrypt (с HAProxy это тоже возможно, но потребует немного больше усилий).