Приложение Angular PWA, обрабатывающее альтернативные имена хостов - PullRequest
0 голосов
/ 27 октября 2018

У меня есть работающее приложение Angular-Nodejs pwa, работающее через настройку обратного прокси-сервера nginx на серверах Ubuntu. Позвольте назвать это https://example.com

У меня есть работающий механизм блога, который доступен извне (то есть вы не должны входить в систему) через страницу обзора на https://example.com/d?d=2

Вопрос : как реализовать использование https://blog.example.com с тем же эффектом, что и использование https://example.com/d?d=2?

Другими словами: я хочу добавить поддомен «блог» к своему обычному домену, чтобы иметь возможность видеть блог, но я не хочу менять приложение, касающееся уже созданного механизма ведения блогов.

У меня есть рабочее решение, но оно неуклюжее и совсем не "угловой путь", как мне бы хотелось.

Мое текущее решение:

  1. DNS: добавьте CNAME для blog.example.com в example.com
  2. HTTPS сертификат: расширить сертификат для example.com с blog.example.com
  3. Сервер NGINX: добавить файл конфигурации с:

... server { ... server_name blog.example.com; ... proxy_pass http://blog.123.123.123.123:123; ... } ...

, где IP-адрес и порт соответствуют приложению, запущенному в pm2

  1. На сервере pm2 123.123.123.123 измените файл / etc / hosts, добавив строку:

123.123.123.123 blog.123.123.123.123

  1. В 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 :
Альтернативно, должен быть лучший способ заняться угловой стороной. Конечно, должна быть возможность использовать альтернативные имена хостов в самом механизме маршрутизации, но как?

...