【问题标题】:Structuring an application with it's API使用 API 构建应用程序
【发布时间】:2015-03-20 13:22:43
【问题描述】:

我目前正在开发一个允许客户下订单的网络应用程序。

我选择处理应用程序结构的方式是将应用程序拆分为两个子应用程序:

  • 1 个仅提供 json 内容的后端应用程序(API)
  • 1 个前端应用程序(在我的例子中是 AngularJS),它将 API url 作为配置并提供用户内容

现在在服务器上,我为测试所做的是创建 2 个虚拟主机:

  • app.com
  • api.app.com

并将 API 链接到前端应用程序。

问题是所有内容都将通过 https 提供服务,并且在当前设置中,我需要购买 2 个 SSL 证书或 1 个通配符证书。

第二种解决方案是在前端应用程序上创建一个子目录(比如 /api)并将后端应用程序复制到其中。优点是只获得一个 SSL 证书并将所有内容都放在同一个目录中; /api 将是一个 .htaccess 重定向到后端 api。

我认为“最干净”的解决方案是完全拆分这两个应用程序并为两者获得通配符 SSL 证书,但我想知道是否有人对一种解决方案是否比另一种更好有一些经验。

【问题讨论】:

    标签: ssl web-applications architecture


    【解决方案1】:

    组合的好处是可以避免CORS。 CORS 并没有那么糟糕,但它是另一个并发症。话虽这么说,如果您想将其公开给外界(允许其他网页使用它),您可能还是需要完成该过程。

    如果您不希望将您的 API 实际公开给第三方,而只是将您的层分开,那么我会考虑组合甚至代理。我使用这种架构将我的服务完全放在防火墙后面,并使用mod_proxy 或类似的东西通过我的 Web 服务器为我的 API 提供服务。这很有用,因为它限制了 API 的暴露,并一次性解决了 CORS 问题。

    如果你真的想在你的网络服务器和你的 API 服务器之间使用 SSL,你可以在你的网络服务器和你的 API 服务器之间做一个自生成的客户端证书。

    【讨论】:

    • 谢谢你的回答,我的想法和你一样,但是没有想到代理,你能解释一下这个技术吗?
    • 我使用 mod_proxy,并且有这样的条目: ProxyPreserveHost On ProxyPass api.mycompany.com/alertservice nocanon timeout=999 connectiontimeout=999 这允许主 Web 服务器代理 api ,在给定的路径上,在这种情况下是/alertservice。然后可以通过 SSL 提供它。
    • 感谢您的回答,我最终选择了使用代理方式,只有一个前端应用访问,/api 重定向到另一个异国端口上的虚拟主机
    猜你喜欢
    • 2017-04-07
    • 2014-04-08
    • 2013-07-25
    • 1970-01-01
    • 2021-11-13
    • 2023-04-09
    • 2013-01-13
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多