我有一个针对后端服务器运行的现有SPA应用程序。
我通过以下方式在我的生产服务器上安装Apache:
我试图将我的前端资产部署到CDN。这里有很多选择,但我并不是在寻找可供选择的建议。
如果我将我的应用部署到CDN,文件将不再托管在我的生产服务器上。所以我将在example.com上发布我的后端,在myapp.cdn.com上发布SPA
据我所知,DNS级别无法使example.com/cdn指向CDN文件。充其量我可以创建另一个域cdn.example.com并使其指向myapp.cdn.com但不幸的是它在我的情况下是不可能的......
Safari History API中存在其他浏览器不具备的不一致行为。
我的索引html页面由我的后端服务器(https://example.com/提供,并设置为基本网址我的前端网址(https://example.com/frontend)。它目前适用于所有浏览器,因为它是相同的域名。
在Safari中,如果您设置了与后端基本网址不同的域的基本网址(例如使用https://frontend.example.com/作为基本网址而不是https://example.com/frontend),则存在阻止我的安全例外情况应用程序通常使用HMTL5历史记录API。
我已经知道了一些替代选项,比如直接在前端提供我的index.html页面,或者不使用基本网址。目前还没有寻找这样的解决方案(即使我考虑过长期改变)
在与我的后端服务器(example.com)相同的域上,使路径(如example.com/cdn)指向我的CDN文件的最佳方法是什么?
我正在寻找一个生产就绪的解决方案,性能保持正确,我的CDN功能仍然存在(etags缓存,HTTP2 ......)
我认为我的Apache服务器最终可能会收到/ cdn上的所有请求,并向CDN域发出永久重定向。即使它涉及到第一次服务的额外往返,只要它是第一次,我就可以使用它。它看起来像是生产就绪选项吗?有没有不错的选择?
答案 0 :(得分:2)
通常,您希望您的前端在根域example.com/
处可用,不是吗?后端可以在任何地方,这没关系,因为没有用户会看到它。
我建议:
example.com
指向CDN服务器backend.example.com
设置您的后端,而不是CDN' backend.example.com
example.com/api/...
+-----+
| CDN | \
+-----+ \
example.com \
\
+-----+ \ +--------+
| CDN | ------ | origin |
+-----+ / +--------+
example.com backend.example.com
/
+-----+ /
| CDN | /
+-----+
example.com
这样:
example.com/
是您的一个规范世界可见网址