当前状态
我有一个现有的SPA应用程序,它运行在后端服务器上。
在我的生产服务器上设置Apache的方式如下:
我想做什么
我正在尝试将我的前端资产部署到CDN中。这里有很多选择,但我并不是在寻求选择哪一个的建议。
问题
如果我将我的应用程序部署到CDN,文件将不再托管在我的生产服务器上。所以我的后端在example.com上,SPA在myapp.cdn.com上
据我所知,在DNS级别上无法使example.com/cdn指向CDN文件。我最多可以创建另一个域cdn.example.com并使其指向myapp.cdn.com,但不幸的是,在我的情况下这是不可能的.
Safari History API中存在其他浏览器没有的不一致行为。
我的索引html页面由我的后端服务器(https://example.com/ )提供,并设置为基本url我的前端url (https://example.com/frontend)。目前,它在所有浏览器中都能正常工作,因为它是同一个域。
在Safari中,如果您设置一个与后端基本url不同的域的基url (例如使用https://frontend.example.com/作为基本url而不是https://example.com/frontend),那么就会出现安全异常,使我的应用程序无法正常使用HMTL5历史记录API。
我在找什么
我已经知道了一些可供选择的选项,比如直接在前端服务我的index.html页面,或者不使用基url。目前还没有找到这样的解决方案(即使我考虑了很长时间的改变)
在与我的后端服务器(example.com)相同的域上,使路径(如example.com/ CDN )指向我的CDN文件的最佳方法是什么?
我正在寻找一种可以生产的解决方案,在这个解决方案中,性能保持正确,而且我的CDN功能还在发挥作用(etags,HTTP2.)
我认为我的Apache服务器最终可以接收/cdn上的所有请求,并发出永久重定向到CDN域。即使第一次服务需要额外的往返,只要这是第一次,我也不会介意。在你看来,这看起来像是一个适合生产的选择吗?有什么像样的选择吗?
发布于 2016-10-25 15:02:51
通常,您希望您的前端在根域example.com/上可用,不是吗?后端可以在任何地方,这并不重要,因为没有用户会看到它。
我要建议的是:
example.com指向CDN服务器。backend.example.com设置后端,而不是CDN dbackend.example.com中提取文件example.com/api/...发出后端请求 +-----+
| CDN | \
+-----+ \
example.com \
\
+-----+ \ +--------+
| CDN | ------ | origin |
+-----+ / +--------+
example.com backend.example.com
/
+-----+ /
| CDN | /
+-----+
example.com这条路:
example.com/是您一个规范的世界可见的URL。https://stackoverflow.com/questions/40242920
复制相似问题