在码头化的 Mern 应用程序上启用 https?数字海洋

Enable https on dockerised Mern app? Digital Ocean

我已经构建了一个 MERN 堆栈应用程序,并将我的 Nodejs(express) 服务器和我的 React 前端分离到单独的 docker 容器中,并且可以使用组合文件启动它们。

我希望在 Digital Ocean Droplet 运行 docker/docker-compose 上将其投入生产,并且想知道如何使用 ssl 保护它?我需要在每个容器上启用证书,还是只在 Droplet 上启用证书。

在研究这个主题时,我看到很多人在他们的前端 (React) 中使用 Nginx,但我不确定这有什么关系?

处理 SSL 的最常见方法是添加 Reverse Proxy(例如 Nginx)来为您的所有环境执行 SSL 卸载。

                    +----------+
                    |          |
                    |  Client  |
                    |          |
                    +----+-----+
                         |
                         | myDomain.net
                         |              
                     [INTERNET]
                         |
                         |
                         v  :443
                +--------+-------+
            /*  |                |   /api
     +----------+  Revese Proxy  +---------+
     |          |   (Gateway)    |         |
     |          +----------------+         |
     |                                     |
     |                                     |
     | :8080                               | :3000
     |                                     |
+----+----------+                +---------+-----+
|               |                |               |
|      SPA      |                |    Backend    |
|  (webserver)  |                |  (API server) |
|               |                |               |
+---------------+                +---------------+

您需要在撰写中添加一个额外的组件。你可以称它为gateway。现在您可以将 SSL 作为秘密传递,现在它将充当您的网络的中间件,用于加密传出数据和解密传入数据。

我找到了一个可能适合您的设置的教程:https://medium.com/@pentacent/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71