Angular PWA应用程序处理备用主机名

时间:2018-10-27 16:03:22

标签: angular nginx ubuntu-16.04 progressive-web-apps nginx-reverse-proxy

我有一个可运行的Angular-Nodejs pwa应用程序,通过Ubuntu服务器上的nginx反向代理设置运行。让我们称之为https://example.com

我有一个有效的博客机制,可通过https://example.com/d?d=2上的概述页面从外部访问(意味着您无需登录)

问题:如何实现对https://blog.example.com的使用与使用https://example.com/d?d=2的效果相同?

换句话说:我想在我的常用域中添加一个子域“ blog”以能够看到博客,但是我不想更改有关已实现的博客机制的应用程序。

我有一个可行的解决方案,但是它很笨拙,根本不像我希望的那样是“成角度的方式”。

我当前的解决方案:

  1. DNS:将blog.example.com的CNAME添加到example.com
  2. HTTPS证书:使用blog.example.com扩展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
另外,必须有一种更好的方法来解决“角”面。当然可以在路由机制本身中使用备用主机名,但是如何?

0 个答案:

没有答案