web端如何实现Https面向nginx及其背后的几个微服务

How to implement Https on web facing nginx and several microservices behind it

我刚开始开发一个 SPA,带有 java(dropwizard) REST 后端。我对 'web' 开发有点陌生,但我以前做过内部 Web 应用程序,所以安全性以前不是一个大问题。 现在我正在使用 nginx 作为我的 public 面向 Web 服务器,我刚刚发现在我们拆分实际服务器时出现的一大堆复杂情况:为我的 SPA 文件提供服务的静态 Web 服务器,以及 java它背后的微服务。

我习惯于使用 mod_jk 与 tomcat 进行 apache 通信,但现在我不得不在开发中实施 CORS,因为我的 SPA 部署在 lite-server 服务于不同的端口比 dropwizard 提供的 REST Api 更好。

现在我得到了我的最小可行产品并想将它部署到产品上, 但我不知道该怎么做。

  1. 我还需要 CORS header 吗? Dropwizard 将 运行 分别位于仅对本地进程可用的不同端口上,然后我将 nginx 配置为路由传入请求,例如/api/ 到那个端口。这算作 cross-origin 吗?
  2. 我想提供完整的 https。 Dropwizard 可以服务于 https,但我不想在多个微服务上更新 SSL 证书。我阅读了有关 nginx ssl 终止的信息,这是否能让我在本地使用普通 http 而在 nginx 上使用 https?
  3. 使用此架构进行部署时还有其他注意事项吗?

谢谢!

是的,你一定能做到!

您可以使用 nginx 终止 https,并且仍然让后端在纯 http 甚至 https 上运行。 proxy_pass 指令确实支持上游内容的两种访问方案。如有必要,您还可以使用较新的 TCP 流代理。

真的没有那么多警告。它通常会起作用。