У меня есть работающее приложение Angular-Nodejs pwa, работающее через настройку обратного прокси-сервера nginx на серверах Ubuntu. Позвольте назвать это https://example.com
У меня есть работающий механизм блога, который доступен извне (то есть вы не должны входить в систему) через страницу обзора на https://example.com/d?d=2
Вопрос : как реализовать использование https://blog.example.com с тем же эффектом, что и использование https://example.com/d?d=2?
Другими словами: я хочу добавить поддомен «блог» к своему обычному домену, чтобы иметь возможность видеть блог, но я не хочу менять приложение, касающееся уже созданного механизма ведения блогов.
У меня есть рабочее решение, но оно неуклюжее и совсем не "угловой путь", как мне бы хотелось.
Мое текущее решение:
- DNS: добавьте CNAME для blog.example.com в example.com
- HTTPS сертификат: расширить сертификат для example.com с blog.example.com
- Сервер NGINX: добавить файл конфигурации с:
...
server { ...
server_name blog.example.com; ...
proxy_pass http://blog.123.123.123.123:123; ...
} ...
, где IP-адрес и порт соответствуют приложению, запущенному в pm2
- На сервере pm2 123.123.123.123 измените файл / etc / hosts, добавив строку:
123.123.123.123 blog.123.123.123.123
- В Angular перехватить ситуацию, когда используется известный поддомен (блог), и перенаправить на страницу блога:
if (window.location.hostname.split('.')[0] === 'blog') {
let port = '';
if (this.$isDev) {
port = `:${window.location.port}`;
}
return window.location.replace(
`${window.location.protocol
}//${window.location.hostname.slice(5)
}${port}/d?d=2`
);
}
Это работает, когда 5. помещается в компонент маршрута по умолчанию, но оставляет пользователя с плохим опытом, так как страница маршрута по умолчанию визуализируется в ближайшее время, а затем перезаписывается целевой страницей блога.
Подзапрос 1 :
В идеале я хотел бы настроить перенаправление в nginx так, чтобы оно указывало непосредственно на 123.123.123.123/d?d=2, но я не думаю, что здесь можно указать путь?
Подзапрос 2 :
Альтернативно, должен быть лучший способ заняться угловой стороной. Конечно, должна быть возможность использовать альтернативные имена хостов в самом механизме маршрутизации, но как?