Однако так ли это всё ещё? Редирект в моём случае не поможет (и мне действительно не хочется настраивать сложные переписывания правил обратного прокси для простого временного сценария): в моём случае я хочу запустить новый сервер Discourse параллельно с существующим и иметь его staging-версию с новым именем. При этом сервер должен также принимать официальное имя (для момента переключения в DNS или когда администраторы используют алиас в /etc/hosts). Это значительно улучшило бы этап тестирования.
По-моему, основная проблема сейчас — абсолютные URL в CSP, которые мешают этому работать (хотя поскольку они уже проверяют протокол, их можно расширить для проверки имён хостов из списка разрешённых). Доступна ли эта возможность уже сейчас?
Кстати, в моём случае я тестирую через HTTP, но, думаю, настройка Let’s Encrypt для запроса нескольких сертификатов уже описана здесь, так что я смогу сделать это позже (это всё равно не сработает, пока доступ к серверу не будет возможен через правильный официальный алиас).
Кстати, я только что заметил, что пересборка контейнера приложения с другим DISCOURSE_HOSTNAME не работает — подозреваю, что это тоже где-то в базе данных (но это нельзя изменить в настройках администратора).
Это делает ещё более важным наличие списка допустимых хостов для такого сценария.
Если вы хотите, чтобы несколько имён разрешались и Discourse перенаправлял запросы к нужному из них, для HTTP всё уже готово. Для HTTPS вам потребуется получить сертификат для всех доменов. Думаю, статья Настройка Let’s Encrypt с несколькими доменами может помочь.
Если вы хотите, чтобы сайт не перенаправлял сам на себя, можно настроить nginx так, чтобы он не выполнял это перенаправление. Однако я не уверен, как именно объяснить вам, как это сделать.
Тема с изменением имени хоста работает у меня ненадёжно (например, несмотря на remap+rebake, эмодзи Twitter в приветственном посте ведут на неверный сервер) — я ещё не изучил, почему так происходит (сообщу вам). По крайней мере, это не проходит безболезненно.
Перенаправление для моих случаев не работает, так как оно ведёт на старый сервер.
Конфигурация nginx не требует изменений, она не знает об имени хоста. Но проблема скорее в приложении, например, заголовки CSP содержат полный URL (не знаю почему).